2014-06-26 26 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. 
相关问题