[英]Error 500 when trying to get WADL of jax-rs service
在我们的项目中,我们将两个JAX-RS服务部署到Karaf容器中。 当我尝试通过服务链接( http:// localhost:8181 / cxf / myservice1?_wadl )获取WADL时,出现以下错误:
造成原因:
javax.xml.transform.TransformerFactoryConfigurationError:在javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:121)上找不到提供者org.apache.xalan.processor.TransformerFactoryImpl
以为第二个服务没有这样的问题,并检索了正确的WADl( http:// localhost:8181 / cxf / myservice2?_wadl ):
<application xmlns="http://wadl.dev.java.net/2009/ xmlns:xs="http://www.w3.org/2001/XMLSchema">
<grammars/>
<resources base="http://localhost:8181/cxf/dictionary">
<resource path="/">
<resource path="{name}">
<param name="name" style="template" type="xs:string"/>
<method name="GET">.....
我们使用CXF 3.1.3。 两种服务都是通过Blueprint配置的,但是在这里所有配置都是相同的,这就是为什么我不希望在这里出现问题。
据我了解,就CXF而言,WADL默认情况下一直在生成,只是在JAX-RS服务链接后附加“?_wadl”,这意味着我无法手动配置它,不是吗?
感谢您提出的建议。 谢谢
为了使wadl链接正常工作,您需要添加cxf服务描述库。
Maven依赖关系为:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-service-description</artifactId>
<version>3.1.3</version>
</dependency>
我想通了,并希望与社区分享,如果其他人会遇到这样的问题。
事实证明,WADL生成需要Xalan XSLT处理器进行xml转换。 由于CXF在功能集中不包含该库,因此需要将其作为单独的捆绑软件安装。 而且Xalan依赖于Apache Commons BCEL ,这意味着BCEL包也需要添加到Karaf中(或者如果存在的话,也可以添加到任何其他OSGI容器中)。 就我而言,功能摘录如下:
<bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/2.7.1_7</bundle>
<bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.bcel/5.2_4</bundle>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.