2013-05-24 20 views
9

Sto tentando di creare un client di servizio Web utilizzando la procedura guidata Eclipse Juno SR2. Il servizio è correttamente distribuito e in esecuzione su un server Glassfish 3.1.2 e posso vedere il file WSDL o creare il client usando Axis. Il problema sorge se si tenta di utilizzare CXF (CXF provato 2.6.8 e 2.7.5) per creare il cliente in un progetto Web dinamico creato per una Glassfish 3.1.2:Assistente client Eclipse Web Service e CXF

Loading FrontEnd jaxws ... 
Loading DataBinding jaxb ... 
wsdl2java -client -d /Users/dude/Documents/SOA/workspace/gf/.cxftmp/src -classdir /Users/dude/Documents/SOA/workspace/gf/build/classes -p http://testservice.csiaf.unifi.it/=it.unifi.csiaf.testservice -impl -validate -exsh false -dns true -dex true -wsdlLocation http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl 
wsdl2java - Apache CXF 2.6.8 

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/Users/dude/glassfish3/glassfish/modules/weld-osgi-bundle.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/usr/local/apache-cxf-2.6.8/lib/slf4j-jdk14-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

WSDLToJava Error: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsdl definition from : http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl 
Caused by : WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 

org.apache.cxf.tools.common.ToolException: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsdl definition from : http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl 
Caused by : WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:420) 
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:184) 
Caused by: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsdl definition from : http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl 
Caused by : WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 
    at org.apache.cxf.wsdl11.WSDLDefinitionBuilder.parseWSDL(WSDLDefinitionBuilder.java:97) 
    at org.apache.cxf.wsdl11.WSDLDefinitionBuilder.build(WSDLDefinitionBuilder.java:69) 
    at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:82) 
    at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:59) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:198) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:412) 
    ... 4 more 
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:243) 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:192) 
    at org.apache.cxf.wsdl11.WSDLDefinitionBuilder.parseWSDL(WSDLDefinitionBuilder.java:78) 
    ... 10 more 
Caused by: java.lang.RuntimeException: Cannot create a secure XMLInputFactory 
    at org.apache.cxf.staxutils.StaxUtils.createXMLInputFactory(StaxUtils.java:299) 
    at org.apache.cxf.staxutils.StaxUtils.getXMLInputFactory(StaxUtils.java:254) 
    at org.apache.cxf.staxutils.StaxUtils.createXMLStreamReader(StaxUtils.java:1423) 
    at org.apache.cxf.staxutils.StaxUtils.createXMLStreamReader(StaxUtils.java:1317) 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:233) 
    ... 12 more 

Se provo ad eseguire il WSDL2Java come linea di comando funziona e vengono creati i file .java:

macpro:glassfish3 dude$ /usr/local/apache-cxf-2.6.8/bin/wsdl2java -client -d /Users/dude/Documents/SOA/workspace/gf/.cxftmp/src -classdir /Users/dude/Documents/SOA/workspace/gf/build/classes -p http://testservice.csiaf.unifi.it/=it.unifi.csiaf.testservice -impl -validate -exsh false -dns true -dex true -wsdlLocation http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl 
Loading FrontEnd jaxws ... 
Loading DataBinding jaxb ... 
wsdl2java -client -d /Users/dude/Documents/SOA/workspace/gf/.cxftmp/src -classdir /Users/dude/Documents/SOA/workspace/gf/build/classes -p http://testservice.csiaf.unifi.it/=it.unifi.csiaf.testservice -impl -validate -exsh false -dns true -dex true -wsdlLocation http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl 
wsdl2java - Apache CXF 2.6.8 

suppongo che ci sia qualche problema nel combo Eclipse + CXF, dal momento che la riga di comando funziona, ma non ho idea di come risolverlo . Qualche idea ?

risposta

10

È necessario assicurarsi che Woodstox 4.2.0 venga prelevato. In alternativa, impostare la proprietà di sistema org.apache.cxf.stax.allowInsecureParser true

+0

Penso che tu abbia ragione: il problema è che persino aggiungere i JAR Woodstox al percorso di costruzione del progetto (anche aggiungerli nelle directory CXF in modo che vengano scelti da Eclipse quando si aggiunge il runtime) non è sufficiente: la procedura guidata sembra ignorali. Finora ho deciso di tornare al vecchio CXF dove non era richiesto Woodstox, e ho archiviato un bug di Eclipse per chiedere loro di verificare come funziona il wizard. – Marco

+0

Quale versione non richiede Woodstox? – pacoverflow

+1

Se si esegue l'aggiornamento a CXF 3.0.0 o versioni successive, ** non è necessario ** aggiungere ** woodstock ** (woodstox-core-asl e stax2-api). Se lo fai, otterrai la famosa eccezione –

2

Provare a rimuovere questi file jar 2 dalla glassfish\modules directory:

  • woodstox-core-asl.jar
  • stax2- api.jar

Penso che impedirà l'utilizzo dei 2 file JAR (woodstox e stax2) dal progetto CXF dopo la distribuzione.

0

Prova a escludere questo se esiste come una dipendenza da qualche parte, e utilizzare Woodstox 4.2.0:

<artifactId>wstx-asl</artifactId> 
<groupId>org.codehaus.woodstox</groupId> 
0

Ho affrontato lo stesso problema in JDeveloper e che ha ottenuto risolto con l'aggiunta di "woodstox-core-ASL-4.2 .1.jar "al classpath.

0

stavo affrontando lo stesso problema, ma la distribuzione a sfera web, e dopo una ricerca di qualche ora capito l'esatta versione per woodstox, ossia inferiore

<dependency> 
    <groupId>org.codehaus.woodstox</groupId> 
    <artifactId>woodstox-core-asl</artifactId> 
    <version>4.2.0</version> 
</dependency> 

Questo link https://bugs.eclipse.org/bugs/show_bug.cgi?id=409070 anche aiutato a capito .

Entrambi i client Java e .Net funzionano correttamente.

Problemi correlati