设为首页 收藏本站
查看: 592|回复: 0

[经验分享] web应用增加webservice后从tomcat移植到weblogic后各种类冲突,各种异常解决

[复制链接]

尚未签到

发表于 2017-2-11 06:30:42 | 显示全部楼层 |阅读模式
1.Webservice增加到项目中后,部署到weblogic12c下,在启动或者部署时报错:
Caused By: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log

执行步骤:
1. 替换了原来的log4j.jar,版本号:Implementation-Version: 1.2.2,替换后版本号:log4j-1.2.17.jar,

2. 将原来的commons-logging.jar包,版本号:Implementation-Version: 1.0.3,替换成commons-logging-1.1.1.jar,成功修复
org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log
的异常


分析:
此问题应该是common-logging.jar的早期版本的问题,1.04以前都有,用1.1.1版本替换后可以解决
参考文档:
http://apache-commons.680414.n4.nabble.com/Commons-Logging-Log4JLogger-does-not-implement-Log-exception-td743106.html




二.修复上述问题后,在部署的过程中又出现了别的问题:
java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/GenericClassLoader) previously initiated loading for a different type with name "org/apache/struts/action/ActionServlet"

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/GenericClassLoader) previously initiated loading for a different type with name "org/apache/struts/action/ActionServlet"
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:379)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:453)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:364)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
at financemanage.util.CacheFilter.doFilter(CacheFilter.java:33)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
at financemanage.util.EncodingFilter.doFilter(EncodingFilter.java:63)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
at financemanage.util.SessionCheckFilter.doFilter(SessionCheckFilter.java:55)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
at financemanage.util.threadlocal.ThreadLocalFilter.doFilter(ThreadLocalFilter.java:30)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3288)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/GenericClassLoader) previously initiated loading for a different type with name "org/apache/struts/action/ActionServlet"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:343)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:302)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
at org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:802)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
at jsp_servlet._financemanage.__login_tran_new._jspService(__login_tran_new.java:244)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
... 24 more

好嘛,一步一个坑啊。

我再找。。。。
分析:
先怀疑是web.xml中的加载顺序有问题,修改了web.xml文件中servlet的加载顺序,同时将<load-on-startup>1</load-on-startup>参数数值小的排在了前面,(注,后面分析这个应该没有很大的影响)
还是不行。。。
继续
怀疑是weblogic类加载的顺序问题导致的,修改weblogic.xml,增加项目中类库优先加载,直接增加这个加载后部署会报xml解析错误(我这发现是org.w3c.dom.Document是这个类有问题,跟weblogic的jar冲突),需要将xml-api.jar,ss_css2.jar包删掉
执行操作:
3. 修改weblogic.xml,删除xml-api.jar,ss_css2.jar
3.1 修改web.xml修改servlet的加载顺序及数字:

3.2. weblogic.xml修改内容:黄色部分为weblogic.xml修改
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD WebApplication 8.1//EN""http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
        <session-descriptor>
                <cookie-name>CWJSESSIONID</cookie-name>
        </session-descriptor>
        
        <container-descriptor>
                <prefer-web-inf-classes>true</prefer-web-inf-classes>
        </container-descriptor>
</weblogic-web-app>
参考文档:http://blog.csdn.net/lklinkang/article/details/6605466


重新部署,部署、启动没有报错,都正常,登陆首页报错:
Compilation of JSP File '/financemanage/login_tran_new.jsp' failed:
________________________________________
login_tran_new.jsp:7:2: Type mismatch: cannot convert from Tag to JspTag
if (  request.getRequestURL().indexOf("10.0.169.165/cwb") != -1 ) {
        ^------------------------------------------------------------------
%>
^
login_tran_new.jsp:206:4: Type mismatch: cannot convert from FormTag to JspTag
<html:form action="/financemanage/login.do" method="post">
          ^-------^
login_tran_new.jsp:220:12: Type mismatch: cannot convert from ErrorsTag to JspTag
         <html:errors/>
                  ^---------^
login_tran_new.jsp:220:25: The method _releaseTags(PageContext, JspTag) in the type __login_tran_new is not applicable for the arguments (PageContext, ErrorsTag)
         <html:errors/>
                               ^
login_tran_new.jsp:220:25: Type mismatch: cannot convert from Tag to JspTag
         <html:errors/>
                               ^
login_tran_new.jsp:225:41: The method _releaseTags(PageContext, JspTag) in the type __login_tran_new is not applicable for the arguments (PageContext, FormTag)
    <td height="30"><img src="<%=path%>financemanage/images/style_new/login_btn.gif" alt="" style='cursor:pointer' /></td>
                                               ^--------------------------------------------------------------------------------------------------------
  </html:form>
---------^
login_tran_new.jsp:225:41: Type mismatch: cannot convert from Tag to JspTag
    <td height="30"><img src="<%=path%>financemanage/images/style_new/login_btn.gif" alt="" style='cursor:pointer' /></td>
                                               ^--------------------------------------------------------------------------------------------------------
  </html:form>
---------^
分析:是JspTag的相关类跟weblogic的发生冲突,通过eclipse工具在项目中的统计查找,没发现JspTag的类,只在servlet.jar中找到了一个JspTagException,不知道对不对,先试试吧,删之。。
执行操作:
4. 删除servlet.jar再试,

再次测试部署,启动,貌似都正常
登陆首页,OK,可以正常登陆,

直接访问webservice,(http://10.10.111.29:7001/cwService)
Ok,出来了配置信息,

至此,问题解决。

需要注意的是,删除后没有在tomcat环境下测试,只是在weblogic12c环境下测试通过

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-340369-1-1.html 上篇帖子: 抛弃LCDS和FMS,在tomcat下开发Red5应用(第四篇)-客户端和服务器端的方法互相调用 下篇帖子: 整合Flash Builder4.0+MyEclipse 8.6+BlazeDS+Sping 3.0+Hibernate3.3+MySQL5.5+Tomcat+
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表