2014-06-26 24 views
0

在jboss上部署應用程序時出現問題。我發現了一些信息woodstox的變化版本可能會有所幫助,但它不是... 日誌:在jboss上部署應用程序時無法解析WSDL - 也許Woodstox

16:58:09,079 INFO [stdout] (MSC service thread 1-2) [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] Failed to parse WSDL 
16:58:09,080 INFO [stdout] (MSC service thread 1-2) javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 
16:58:09,080 INFO [stdout] (MSC service thread 1-2) at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:257) 

16:58:09,104 INFO [stdout] (MSC service thread 1-2) Caused by: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 
16:58:09,104 INFO [stdout] (MSC service thread 1-2) at org.apache.cxf.staxutils.StaxUtils.createXMLInputFactory(StaxUtils.java:312) 

16:58:09,514 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-2) Context initialization failed: org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: Endpoint[cxf://bean:adapter.NotificationService?dataFormat=PAYLOAD]. Reason: org.apache.cxf.service.factory.ServiceConstructionException: No valid WSDL classpath:/interface/adapter/notification-service/v10/NotificationService.wsdl nor service class is specified. 
     at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:409) [camel-core-2.12.3.jar:2.12.3] 
     at org.apache.camel.impl.ProducerCache.acquireProducer(ProducerCache.java:123) [camel-core-2.12.3.jar:2.12.3] 

我已經完全不知道我可以檢查還有什麼......我的環境:

  • SVN 1.7.9(r1462340)的Apache Maven的3.1.1
  • (0728685237757ffbf44136acec0402957f723d9a; 2013年9月17日Maven的家:
  • Java版本:1.7.0_45,供應商:Oracle公司OS的名字: 「LINUX」,
  • 版本:「3.11.0-12-generic」,arch:「amd64」,family:「unix」javac
  • 1.7.0_45 Java版本「1.7.0_45」Java™SE運行時環境(build 1.7.0_45 -b18)
  • Woodstox在JBoss 4.1.1(我將其更改爲4.2.1和4.2.0)

我的WSDL定義:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<wsdl:definitions name="NotificationService" 
    targetNamespace="http://service/NotificationService/v10" 
    xmlns:tns="http://service/NotificationService/v10" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> 

    <wsdl:types> 
     <xs:schema 
      targetNamespace="http://service/NotificationService/v10"> 
      <xs:include schemaLocation="NotificationService.xsd" /> 
     </xs:schema> 
    </wsdl:types> 

    <!-- notifyPaymentStatus message--> 

    <wsdl:message name="notifyPaymentStatusParameters"> 
     <wsdl:part name="notifyPaymentStatusPart" element="tns:notifyPaymentStatusRQ"> 
     </wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="notifyPaymentStatusResult"> 
     <wsdl:part name="notifyPaymentStatusPart" element="tns:notifyPaymentStatusRS"> 
     </wsdl:part> 
    </wsdl:message> 


    <!-- notifyError message--> 

    <wsdl:message name="notifyErrorParameters"> 
     <wsdl:part name="notifyErrorPart" element="tns:notifyErrorRQ"> 
     </wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="notifyErrorResult"> 
     <wsdl:part name="notifyErrorPart" element="tns:notifyErrorRS"> 
     </wsdl:part> 
    </wsdl:message> 


    <wsdl:portType name="NotificationService"> 
     <wsdl:operation name="notifyPaymentStatus"> 
      <wsdl:input name="notifyPaymentStatusParameters" message="tns:notifyPaymentStatusParameters" /> 
      <wsdl:output name="notifyPaymentStatusResult" message="tns:notifyPaymentStatusResult" /> 
     </wsdl:operation> 
     <wsdl:operation name="notifyError"> 
      <wsdl:input name="notifyErrorParameters" message="tns:notifyErrorParameters" /> 
      <wsdl:output name="notifyErrorResult" message="tns:notifyErrorResult" /> 
     </wsdl:operation> 
    </wsdl:portType> 

    <wsdl:binding name="NotificationServiceBinding" type="tns:NotificationService"> 
     <soap:binding style="document" 
      transport="http://schemas.xmlsoap.org/soap/http" /> 
     <wsdl:operation name="notifyPaymentStatus"> 
      <soap:operation soapAction="" /> 
      <wsdl:input> 
       <soap:body use="literal" /> 
      </wsdl:input> 
      <wsdl:output> 
       <soap:body use="literal" /> 
      </wsdl:output> 
     </wsdl:operation> 
     <wsdl:operation name="notifyError"> 
      <soap:operation soapAction="" /> 
      <wsdl:input> 
       <soap:body use="literal" /> 
      </wsdl:input> 
      <wsdl:output> 
       <soap:body use="literal" /> 
      </wsdl:output> 
     </wsdl:operation> 
    </wsdl:binding> 

    <wsdl:service name="NotificationService"> 
     <wsdl:port name="NotificationServicePort" binding="tns:NotificationServiceBinding"> 
      <soap:address location="http://www.example.org/" /> 
     </wsdl:port> 
    </wsdl:service> 


</wsdl:definitions> 

和端點:

<cxf:cxfEndpoint id="adapter.NotificationService" 
    endpointName="s:NotificationServicePort" serviceName="s:NotificationService" 
    wsdlURL="classpath:/interface/adapter/notification-service/v10/NotificationService.wsdl" 
    xmlns:s="http://service/NotificationService/v10"> 
    <cxf:properties> 
     <entry key="schema-validation-enabled" 
      value="true" /> 
    </cxf:properties> 
    <cxf:inInterceptors> 
     <ref bean="logInInterceptor" /> 
    </cxf:inInterceptors> 
    <cxf:inFaultInterceptors> 
     <ref bean="logInInterceptor" /> 
    </cxf:inFaultInterceptors> 
    <cxf:outInterceptors> 
     <ref bean="logOutInterceptor" /> 
    </cxf:outInterceptors> 
    <cxf:outFaultInterceptors> 
     <ref bean="logOutInterceptor" /> 
    </cxf:outFaultInterceptors> 
</cxf:cxfEndpoint> 

當我調試時,我發現了一些屬性,名爲: org.apache.cxf.stax.allowInsecureParser。我怎樣才能把它設置爲真?在這些情況下,我可能在解析wsdl時沒有任何問題。

+0

請向我們展示Web服務的配置。 –

+0

我添加了wsdl的定義 –

回答

0

這一個解決辦法,我工作得很好:

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject"> 
     <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
      <property name="targetClass" value="java.lang.System" /> 
      <property name="targetMethod" value="getProperties" /> 
     </bean> 
    </property> 
    <property name="targetMethod" value="putAll" /> 
    <property name="arguments"> 
     <util:properties> 
      <prop key="org.apache.cxf.stax.allowInsecureParser">true</prop> 
     </util:properties> 
    </property> 
</bean> 

來自: CXF 2.7.x Woodstox Compatibility via Maven

我發現,在我的依賴我有正確的lib:4-2-0,但我不知道爲什麼jboss使用另一個lib從某處...在我看來更好的sollution將設置jboss不覆蓋庫。在另一種情況下,我仍然像這樣發出警告:

2014-06-27 12:59:58,932 WARN (MSC service thread 1-16) [org.apache.cxf.staxutils.StaxUtils] Could not create a secure Stax XMLInputFactory. Found class com.ctc.wstx.stax.WstxInputFactory. Suggest Woodstox 4.2.0 or newer. 
相關問題