`
jiqing0311
  • 浏览: 68708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

web应用增加webservice后从tomcat移植到weblogic后各种类冲突,各种异常解决

阅读更多
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' onclick="formsubmit()"/></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' onclick="formsubmit()"/></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环境下测试通过


分享到:
评论

相关推荐

    将应用部署在weblogic中于axis2冲突的问题及解决方案

    "将应用部署在Weblogic中与Axis2冲突的问题及解决方案" 问题描述 在将应用部署到Weblogic Server 10.3时,出现了一个错误,抛出ClassCastException异常,具体错误信息为: `java.lang.ClassCastException: ...

    webservice部署tomcat简单例子(客户端和服务端)

    5. **部署到Tomcat**:将这个Web应用打包成WAR文件(例如:hello-web-service.war),然后将它复制到Tomcat的`webapps`目录下。Tomcat会自动解压并部署这个应用。 6. **启动Tomcat**:启动Tomcat服务器,Web服务就...

    java+webService+tomcat+实例

    Java WebService与Tomcat是开发和部署Web服务的常用组合。WebService是一种基于标准的、平台无关的通信方式,允许不同的应用程序之间交换数据。Tomcat是一款轻量级的Java应用服务器,广泛用于部署Java Web应用程序,...

    weblogic12c部署webservice错误问题WSSERVLET11

    在IT行业中,WebLogic Server是Oracle公司提供的一个企业级Java EE应用服务器,广泛用于构建、部署和管理企业级Web服务和应用程序。WebLogic Server 12c(12.1.x版本)是其中的一个重要版本,它引入了许多新特性和...

    WebService例子及其如何部署到tomcat上面

    4. **部署应用**:将包含JAR、`web.xml`和其他资源的WAR文件复制到Tomcat的`webapps`目录下。 5. **启动Tomcat**:启动Tomcat服务器,服务就会自动暴露在配置的URL上,客户端可以通过SOAP请求进行调用。 客户端调用...

    eclipse+tomcat+axis下创建WebService

    这是一个详细步骤的指南,涵盖了从环境准备到测试 WebService 的全过程。 首先,我们需要确保已经准备好了所有必要的工具和软件。Eclipse 是一个流行的 Java IDE,它提供了丰富的插件支持,包括用于 WebService ...

    CXF+Spring+Tomcat发布WebService

    【标题】"CXF+Spring+Tomcat发布WebService"涉及的是使用Apache CXF框架与Spring框架结合,在Tomcat服务器上部署和消费Web服务的过程。这是一个常见的企业级应用开发场景,特别是对于实现基于SOAP协议的Web服务。...

    tomcat部署webservice程序

    描述中提到的“1:部署webservice的结果文件”可能是指部署后的WAR(Web ARchive)文件,这是Java Web应用的标准打包格式,包含了所有必要的类、资源和配置文件。这个WAR文件通常会被放入Tomcat的webapps目录下,由...

    CXF发布WebService,jboss和tomcat都能发布

    在本教程中,我们将深入探讨如何使用CXF在JBoss和Tomcat这两种流行的Java应用服务器上发布Web服务。 ### 一、CXF WebService发布 1. **CXF环境搭建** 在开始之前,确保你已经安装了Java Development Kit (JDK) 和...

    webservice简单例子,Tomcat

    4. **部署服务**: 将服务的WAR文件(Web应用归档文件)或者直接将编译后的Java类和相关的配置文件放入Tomcat的webapps目录下。Tomcat会自动加载并启动Web服务。 5. **创建客户端**: 使用Axis1的wsdl2java工具,同样...

    webservice例子(客户端和服务器端和tomcat部署).zip

    总结,这个压缩包提供的示例涵盖了从创建Web服务到部署到Tomcat服务器,再到客户端调用的全过程。对于初学者来说,这是一个很好的实践项目,可以帮助理解Web服务的工作原理和开发流程。通过深入研究这些文件,可以...

    javaweb 系统从Tomcat移植到WAS6.1.doc

    ### JavaWeb系统从Tomcat移植到WAS6.1的关键步骤与注意事项 #### 知识点一:环境配置与适配 在将JavaWeb系统从Tomcat移植到WebSphere Application Server (WAS) 6.1的过程中,首先需关注的是环境配置与适配问题。...

    Tomcat下发布webservice1

    当我们谈论“Tomcat下发布webservice1”时,我们实际上是在讨论如何在Apache Tomcat服务器上部署和运行一个基于Web服务的应用。Apache Tomcat是一个流行的开源Java Servlet容器,它支持Java EE的Web组件,如Servlets...

    Weblogic92+CXF+XDoclet+Spring轻松搞定webservice 例子

    WebLogic Server 9.2 是Oracle公司的一款企业级Java应用服务器,它提供了完整的Java EE(J2EE)平台支持,包括Servlet、JSP、EJB等技术,用于开发、部署和管理分布式Web应用程序。在本例中,Weblogic92作为服务端...

    weblogic下webservice 开发

    - **从 WebLogic Web 服务调用 Web 服务**:解释了如何在 WebLogic 应用程序内部调用其他 Web 服务。 #### 四、WebLogic Web 服务的迭代开发 - **WebLogic Web 服务编程模型概述**:概述了 WebLogic Web 服务的...

    在web项目中新增或者添加webservice服务

    5. **部署服务**:将服务打包到Web应用中,然后部署到服务器(如Tomcat、Jetty)。 **三、添加RESTful Web服务** 1. **选择框架**:Java中的Spring Boot框架提供了方便的REST服务支持。 2. **定义资源模型**:...

    webservice动态访问天气预报(tomcat+jsp+servlet+webservice+cxf)

    【标题】"webservice动态访问天气预报(tomcat+jsp+servlet+webservice+cxf)"涉及的关键技术栈包括Web服务、服务器管理、前端交互等多个方面。本文将深入探讨这些技术在实现动态天气预报功能中的应用。 【描述】中...

    weblogic 兼容的 WebService(2)

    WebLogic Server是Oracle公司提供的一个企业级Java应用服务器,它支持各种Java EE标准,包括Web服务。了解Weblogic对WebServices的支持对于开发和部署基于Java的分布式应用程序至关重要。 1. **Web Services基础...

    Spring+CXF+tomcat开发webservice

    在IT行业中,构建Web服务是常见的任务,Spring、CXF和Tomcat的组合是一个流行的解决方案。这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端...

    WebAPI 和 WebService的区别.txt

    WebAPI 和 WebService的区别

Global site tag (gtag.js) - Google Analytics