cxf - WebSphere 8.5 上的 Apache CXF 2.7.11

标签 cxf websphere-8

我有一个通过 CXF 为客户端公开 Web 服务的应用程序。这方面的工作非常完美。

应用程序本身还需要充当客户端并联系其他服务器,这是我遇到问题的地方。

通过“父优先”类加载,我得到了这个:

Caused by: javax.xml.ws.WebServiceException: Error: Maintain Session is enabled but none of the session properties (Cookies, Over-written URL) are returned.
at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173) ~[org.apache.axis2.jar:na]
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70) ~[org.apache.axis2.jar:na]
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118) ~[org.apache.axis2.jar:na]
at org.apache.axis2.jaxws.BindingProvider.setupSessionContext(BindingProvider.java:355) ~[org.apache.axis2.jar:na]
at org.apache.axis2.jaxws.BindingProvider.checkMaintainSessionState(BindingProvider.java:322) ~[org.apache.axis2.jar:na]
at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:393) ~[org.apache.axis2.jar:na]
at ...

使用“Parent last”类加载,应用程序甚至无法公开自己的服务:

[23/06/15 15:33:12:985 BST] 000002d3 servlet       E com.ibm.ws.webcontainer.servlet.ServletWrapper service Uncaught service() exception thrown by servlet cxf: java.lang.VerifyError: JVMVRFY013 class loading constraint violated; class=org/apache/cxf/jaxb/attachment/JAXBAttachmentUnmarshaller, method=getAttachmentAsDataHandler(Ljava/lang/String;)Ljavax/activation/DataHandler;, pc=0
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:85)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:162)

我已经尝试通过 WAR 的 manifest.mf 禁用 WebShere 自己的 JAXWS 引擎,无论我尝试使用“Parent last”类加载,我总是会遇到类似上述的错误。一个不同的类,具体取决于我移动或替换的 JAR,但总是出现验证错误。

我也经历了official Apache documentation , 各种 IBM guides , 无数blog和论坛帖子无济于事。我对此束手无策

同一个 WAR 在 Tomcat、JBoss 和 WebLogic 上完美运行。

这是所有第三方 JAR 文件的完整列表:

activation-1.1.jar
antisamy-1.4.3.jar
aopalliance-1.0.jar
asm-3.3.1.jar
batik-css-1.7.jar
batik-ext-1.7.jar
batik-util-1.7.jar
bcprov-jdk15-1.46.jar
bsh-core-2.0b4.jar
commons-beanutils-1.7.0.jar
commons-beanutils-core-1.7.0.jar
commons-codec-1.3.jar
commons-collections-3.2.jar
commons-configuration-1.5.jar
commons-dbutils-1.6.jar
commons-digester-1.8.jar
commons-fileupload-1.3.1.jar
commons-httpclient-3.1.jar
commons-io-2.4.jar
commons-jexl-2.1.1.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
cxf-api-2.7.11.jar
cxf-rt-bindings-soap-2.7.11.jar
cxf-rt-bindings-xml-2.7.11.jar
cxf-rt-core-2.7.11.jar
cxf-rt-databinding-jaxb-2.7.11.jar
cxf-rt-frontend-jaxws-2.7.11.jar
cxf-rt-frontend-simple-2.7.11.jar
cxf-rt-transports-http-2.7.11.jar
cxf-rt-ws-addr-2.7.11.jar
cxf-rt-ws-policy-2.7.11.jar
dom4j-1.6.1.jar
esapi-2.0.1.jar
FastInfoset-1.0.2.jar
geronimo-javamail_1.4_spec-1.7.1.ja
hamcrest-all-1.3.jar
hsqldb-1.8.0.10.jar
httpclient-4.3.6.jar
httpcore-4.3.3.jar
jaxen-1.1-beta-8.jar
jaxrpc-api-1.1.jar
jaxrpc-impl-1.1.3_01.jar
jaxrpc-spi-1.1.3_01.jar
joda-time-2.2.jar
js-1.7R2.jar
log4j-1.2.16.jar
logback-classic-0.9.21.jar
logback-core-0.9.21.jar
mail-1.4.7.jar
mailapi-1.4.3.jar
nekohtml-1.9.12.jar
not-yet-commons-ssl-0.3.9.jar
opensaml-2.6.1.jar
openws-1.5.1.jar
quartz-1.8.6.jar
saaj-api-1.3.5.jar
saaj-impl-1.3.jar
serializer-2.7.1.jar
slf4j-api-1.6.0.jar
slf4j-log4j12-1.6.0.jar
spring-aop-3.2.6.RELEASE.jar
spring-beans-3.2.6.RELEASE.jar
spring-context-3.2.6.RELEASE.jar
spring-core-3.2.6.RELEASE.jar
spring-expression-3.2.6.RELEASE.jar
spring-web-3.2.6.RELEASE.jar
stax2-api-3.1.4.jar
velocity-1.7.jar
vuelinkcore-20.2.3.jar
vueservlet-20.2.3.jar
woodstox-core-asl-4.2.1.jar
wsdl4j-1.6.3.jar
xml-apis-ext-1.3.04.jar
xml-resolver-1.2.jar
xmlsec-1.5.6.jar
xmltooling-1.4.1.jar
xom-1.1.jar

有谁知道如何让 WebSphere 8.5 上的 Apache CXF 2.7.11 能够充当服务器客户端?

最佳答案

我们在使用 Was 8.5 (jdk 1.7_64)、CXF、JAXB 和 xmlbeans 时遇到了同样的问题:

JAXB 是 CXF 使用的默认 xml/java 绑定(bind)。 8.5 使用认可的 JAXB api 定义版本 2.2.2(在 <WebSphere-dir>\AppServer\endorsed_apis\jaxb-api.jar 中)和标准实现(在 JRE rt.jar 中)。

Xmlbeans 2.4.x 保留在 org.w3c.* 中已经存在于 Was ( <WebSphere-dir>\AppServer\java_1.7_64\jre\lib\xml.jar ) 中的类。

最后我们是这样解决的:

这是我们成功使用的所有第三方 JAR 文件的完整列表:

  • cxf-*-2.7.11.jar
  • dom4j-1.6.1.jar
  • ehcache-2.8.2.jar
  • ehcache-core-2.5.1.jar
  • jettison-1.1.jar
  • neethi-3.0.3.jar
  • ognl-3.0.6.jar
  • opensaml-2.6.1.jar
  • openws-1.5.1.jar
  • spring-*-3.2.13.RELEASE.jar
  • stax2-api-3.1.1.jar
  • woodstox-core-asl-4.2.1.jar
  • wsdl4j-1.6.3.jar
  • wss4j-1.6.10.jar
  • xml-resolver-1.2.jar
  • xmlbeans-2.3.0-now3c.jar
  • xmlpull-1.1.3.1.jar
  • xmlschema-core-2.1.0.jar
  • xmlsec-1.5.4.jar
  • xmltooling-1.4.1.jar
  • xpp3_min-1.1.4c.jar
  • xstream-1.4.7.jar

我们希望这对您有所帮助。

关于cxf - WebSphere 8.5 上的 Apache CXF 2.7.11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31110951/

相关文章:

java-7 - 是否可以在 IBM WebSphere Application Server 8.5 试用版中使用 Java 7

java - Weblogic 杀死 CXF 的 SSL 配置?

java - 错误 : java. lang.ClassCastException : class org. apache.cxf.bus.spring.SpringBusFactory

java - 如何在camel配置中定义公共(public)路由体?

java - CXF Webservice 客户端在提供 wsdl 时中断

java - CXF : java. lang.ClassNotFoundException : org. apache.cxf.transport.servlet.CXFServlet

java - Eclipse RCP 和 Apache CXF

java - 部署 Spring Boot 1.3.2 IBM WAS 8.5

ssl - 在应用程序级别的 WAS 中通过 HTTPS 配置 JAX-WS Web 服务

ejb - 如何在没有硬编码 JNDI 名称的情况下配置 Java 消息驱动 Bean 和 Websphere 激活规范?