`
tobato
  • 浏览: 102016 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

第二次被CXF+Oracle Weblogic11g 折磨

阅读更多
Tomcat上调试好的程序发布到weblogic上,又碰到jar包问题.

问题现象1
Invocation of init method failed; nested exception is java.lang.LinkageError: 
  loader constraint violation: when resolving field "DATETIME" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) 
  of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, 
  javax/xml/namespace/QName, have different Class objects for that type

分析:工程之前已经设置weblogic.xml优先用web/lib下面的包
<weblogic-web-app>
	<container-descriptor>
		<prefer-web-inf-classes>true</prefer-web-inf-classes>
		</container-descriptor>
  </weblogic-web-app> 

"javax/xml/namespace/QName"无法识别这个错误之前已经碰到过,因为 Apache CXF 里的类的时间晚于 Weblogic 里的类的时间,而且类的二进制内容也发生了改变,
  于是原来 Weblogic 里的其它类由于我们通过了 prefer-web-inf-classes 设置为 true 后,而引用到了现在的 Apache CXF 里的类了,就发生了 java.lang.LinkageError 错误。

解决方式是把工程下所有带javax/xml/namespace/QName class的都删除掉。

问题现象2.
Caused by: javax.xml.bind.JAXBException
 - with linked exception:
[com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
org.w3c.dom.Element is an interface, and JAXB can't handle interfaces.
        this problem is related to the following location:
                at org.w3c.dom.Element
                at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements
                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
                at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointRefer
ence.referenceProperties
                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
org.w3c.dom.Element does not have a no-arg default constructor.
        this problem is related to the following location:
                at org.w3c.dom.Element
                at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements
                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
                at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointRefer
ence.referenceProperties
                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
]
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:217)
        at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)

解决Qname继续启动,出现这个错误。分析原因还是Jar包问题,从com.sun.xml.ws分析可以看出来启动的时候还是没有使用CXF的包路径.

总结问题1和问题2,我们的目的就是要使用自己的包路径,如果冲突的包不多,将jar包加载到weblogic setDomainEnv里面是最简单的.
  比如设置
set PRE_CLASSPATH=C:\temp\webroot\WEB-INF\lib\antlr-xxx.jar;


对于需要修正的类路径可以通过下面的方法进行设置,而不是只用" prefer-web-inf-classes=true" 这个锤子去敲所有的钉子。

<?xml version="1.0" encoding="UTF-8"?>
	<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
  <container-descriptor>
    <prefer-web-inf-classes>false</prefer-web-inf-classes>
    <!--提示即使weblogic即使有这个包也要优先使用下面路径的内容-->
    <prefer-application-resources>
 		<resource-name>META-INF/services/javax.xml.ws.spi.Provider</resource-name>
    </prefer-application-resources>
    <prefer-application-packages>
      <package-name>org.python.core.*</package-name>
    </prefer-application-packages>
  	</container-descriptor>
	</weblogic-web-app> 


折腾几个小时,服务启动了,天下太平了。。

新问题
Caused by: java.lang.NoSuchMethodError: org.joda.time.DateTime.<init>(IIIII)V


显然也是jar包找不到了,将org.joda.time.*加入
    <prefer-application-packages>
      <package-name>org.python.core.*</package-name>
      <package-name>org.joda.time.*</package-name>
    </prefer-application-packages>

搞定!
分享到:
评论

相关推荐

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...

    CXF support WAS Weblogic

    CXF能够很好地与多种应用服务器协同工作,例如WebSphere Application Server (WAS) 和 Oracle WebLogic Server等。 #### 如何在WAS和Weblogic上部署CXF **1. WAS配置概述** 对于WebSphere Application Server ...

    cxf+spring+client

    在这个"**cxf+spring+client**"的主题中,我们将深入探讨CXF与Spring框架结合创建客户端服务的细节,以及如何利用Spring MVC来增强应用程序的交互性。 首先,让我们关注CXF。CXF允许开发者使用Java编程语言来定义和...

    cxf+spring+tomcat

    【标题】"cxf+spring+tomcat"的组合是一个常见的Web服务开发环境,它将Apache CXF(一个用于构建和消费Web服务的开源框架)与Spring框架(一个广泛使用的Java企业级应用开发框架)以及Tomcat(一个流行的轻量级Java...

    Spring+CXF+MyBatis整合代码

    本项目是关于"Spring+CXF+MyBatis"的整合代码实现,旨在提供一个可直接运行的服务端解决方案。接下来,我们将深入探讨这三个核心组件及其整合过程中的关键知识点。 **Spring框架** Spring是Java领域的一个重量级...

    CXF2.1.3+spring3.0+struts2.3.4

    【标签】"CXF+spring WebService CXF"强调了这些组件的集成,特别是CXF作为Web服务的主要提供者,以及与Spring的紧密配合。CXF不仅可以用作服务提供者,还可以作为客户端来消费其他服务,这在Spring的管理下变得更加...

    CXF+SPRING例子

    【CXF+SPRING例子】是一个关于如何将Apache CXF与Spring框架整合的示例项目。Apache CXF是一个开源服务框架,它允许开发者创建和消费Web服务,而Spring框架则是Java应用开发的强大支撑,提供了依赖注入、AOP(面向切...

    cxf+spring webservice demo client

    【标题】:“cxf+spring webservice demo client” 在IT领域,Web服务是一种常见的系统间交互方式,它允许不同应用程序之间共享数据和服务。本示例是关于如何使用Apache CXF和Spring框架创建一个Web服务客户端的...

    Spring+CXF+tomcat开发webservice

    这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端的实现。 **Spring** 是一个广泛使用的Java企业级应用开发框架,它提供了依赖注入(DI)...

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

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

    cxf+spring实现webservice

    以上是CXF+Spring实现Web Service的基本流程和关键知识点。实际应用中,还需要根据具体的需求和环境进行适当的调整和扩展。例如,如果涉及到大型分布式系统,可能还需要考虑服务治理、负载均衡等问题。通过熟练掌握...

    SpringMVC+MyBatis+CXF+Velocity可运行实例

    1):含有spring-3.2.8.RELEASE.jar、velocity-tools-2.0.jar、velocity-1.7.jar、mybatis-spring-1.0.2.jar、mybatis-3.0.6.jar、cxf-api-2.2.9.jar等丰富的jar包。 2):采用spring3.2作为bean容器管理,...

    cxf+spring 完全整合

    代码是我一行行敲的,直接部署就能用,service,client端实现了:(cxf用的是3.0最新的) 1维数组, 2维数组, 3维数组, List, List , Map(adapter方式实现的), 直接返回bean, 返回object[], 做了header的安全认证校验.

    maven+spring+cxf+mybatis

    maven+spring+cxf+mybatis 搭建的webservice项目

    cxf+spring整合

    "CXF+Spring整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...

    springMVC+cxf+mybatis整合项目

    在"springMVC+cxf+mybatis整合项目"中,这三个框架通常会以以下方式进行集成: 1. **SpringMVC** 作为前端控制器,负责接收 HTTP 请求,调度业务逻辑,并返回视图。SpringMVC 通过依赖注入(DI)管理 CXF 和 ...

    cxf+spring使用经验

    【cxf+spring 使用经验】 Apache CXF 是一个开源的 Web 服务框架,它整合了 Celtix 和 XFire 两大项目的优势,提供了全面的 JAX-WS 支持,允许开发者通过 Code First 或 WSDL First 的方式来创建和消费 Web 服务。...

    CXF+Spring 完整版例子

    【标题】"CXF+Spring 完整版例子"是一个示例项目,它演示了如何在Spring框架中集成Apache CXF来构建一个完整的Web服务应用。Apache CXF是一个开源服务框架,它允许开发者创建和消费各种不同类型的Web服务,包括SOAP...

    CXF+RMI+HESSIAN

    【标题】:“CXF+RMI+HESSIAN”整合详解 在IT行业中,当我们谈论“CXF+RMI+HESSIAN”时,我们实际上是在讨论三种不同的技术,它们协同工作以实现分布式服务和远程调用。让我们逐一深入了解这三个概念。 首先,CXF...

    CXF+Jetty发布WebService

    总结,"CXF+Jetty发布WebService"是一个将Java服务接口通过CXF转换成Web服务,并使用Jetty作为服务器的实践过程。CXF简化了服务开发,而Jetty提供了轻量级的运行环境。理解并掌握这一技术栈,对于开发基于Java的...

Global site tag (gtag.js) - Google Analytics