无法在 AEM 6.5 上调用 JAXWS WebService

问题

无法在 AEM 6.5 及更高版本上调用 JAXWS WebService

解决方案

此问题是由于 CFX 包已从 AEM 中移除导致的,您必须从外部安装这些包。

要解决此问题,可以安装“cfx-bundles-1.0.zip”包,该包为 2.3.0 版本的 CXF DOSGi 提供最小的 jar 文件集合。

最小的 jar 集合如下:

/apps/cxf/install/org.apache.servicemix.bundles.wsdl4j-1.6.3_1.jar 
/apps/cxf/install/woodstox-core-5.0.3.jar 
/apps/cxf/install/cxf-core-3.2.0.jar 
/apps/cxf/install/cxf-rt-bindings-soap-3.2.0.jar 
/apps/cxf/install/cxf-rt-bindings-xml-3.2.0.jar 
/apps/cxf/install/cxf-rt-frontend-simple-3.2.0.jar 
/apps/cxf/install/cxf-rt-databinding-jaxb-3.2.0.jar 
/apps/cxf/install/cxf-rt-transports-http-3.2.0.jar 
/apps/cxf/install/cxf-rt-wsdl-3.2.0.jar 
/apps/cxf/install/xmlschema-core-2.2.2.jar 
/apps/cxf/install/woodstox-core-5.0.3.jar 
/apps/cxf/install/stax2-api-3.1.4.jar 
/apps/cxf/install/validation-api-1.1.0.Final.jar 
/apps/cxf/install/asm-all-5.0.4.jar

在某些情况下,您可能会遇到 JAXWS 调用失败并出现以下错误的问题:

javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method <method>. 
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:129) [org.apache.cxf.cxf-rt-frontend-jaxws:3.2.10] 
at com.sun.proxy.$Proxy254.getKeywords(Unknown Source)

要解决此问题,您可以执行以下步骤:

1. 从捆绑包的导入包指令中删除以下内容:

!javax.jws.*, 
!javax.xml.bind.*, 
!javax.xml.bind.annotation.*,

2. 获取要再次解析的包,将以下依赖关系添加到核心捆绑包中:

<dependency> 
  <artifactId>org.apache.servicemix.specs.jaxb-api-2.2</artifactId> 
  <version>2.9.0</version> 
  <groupId>org.apache.servicemix.specs</groupId> 
  <scope>provided</scope> 
</dependency> 
<dependency> 
  <artifactId>geronimo-ws-metadata_2.0_spec</artifactId> 
  <version>1.1.3</version> 
  <groupId>org.apache.geronimo.specs</groupId> 
  <scope>provided</scope> 
</dependency>

下载

注意:

注意:如果您使用 Java 11,也请参阅此文章

Adobe 徽标

登录到您的帐户