繁体   English   中英

尝试获取jax-rs服务的WADL时出现错误500

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM