簡體   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