2013-05-24 44 views
9

Tôi đang cố gắng tạo một Máy khách dịch vụ Web bằng cách sử dụng trình thủ thuật Eclipse Juno SR2. Dịch vụ được triển khai và chạy đúng trên máy chủ Glassfish 3.1.2 và tôi có thể thấy tệp WSDL hoặc tạo máy khách bằng cách sử dụng Axis. Vấn đề nảy sinh nếu tôi cố gắng sử dụng CXF (thử CXF 2.6.8 và 2.7.5) để tạo ra các khách hàng trong một dự án Web động tạo ra cho một GlassFish 3.1.2:Trình hướng dẫn khách hàng dịch vụ Web Eclipse và 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 

Nếu tôi cố gắng thực hiện các WSDL2Java như dòng lệnh nó hoạt động và java file được tạo ra:

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 

tôi cho rằng có một số vấn đề trong các combo Eclipse + CXF, vì làm việc dòng lệnh, nhưng tôi đã không có đầu mối về cách để giải quyết nó . Bất kỳ ý tưởng ?

Trả lời

10

Bạn cần đảm bảo rằng Woodstox 4.2.0 đang được chọn. Ngoài ra, thiết lập các org.apache.cxf.stax.allowInsecureParser sở hữu hệ thống true

+0

Tôi nghĩ rằng bạn là đúng: vấn đề là thậm chí thêm các lọ Woodstox cho dự án xây dựng đường dẫn (thậm chí thêm chúng vào các thư mục CXF để họ được chọn bởi Eclipse khi thêm thời gian chạy) là không đủ: wizard dường như bỏ qua chúng. Cho đến nay tôi đã quyết tâm quay trở lại CXF cũ nơi Woodstox được không cần thiết, và tôi đã đệ đơn kiện lỗi Eclipse để yêu cầu họ kiểm tra như thế nào trình hướng dẫn hoạt động. – Marco

+0

phiên bản nào không đòi hỏi Woodstox? – pacoverflow

+1

Nếu bạn nâng cấp lên CXF 3.0.0 hoặc mới hơn, bạn không nên ** ** ** thêm woodstock ** (woodstox-core-asl và stax2-api) phụ thuộc. Nếu bạn làm thế, bạn sẽ có được ngoại lệ nổi tiếng –

2

Cố gắng loại bỏ những 2 file jar từ glassfish\modules thư mục:

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

Tôi nghĩ rằng nó sẽ ngăn chặn 2 tệp JAR (woodstox và stax2) từ dự án CXF được sử dụng sau khi triển khai.

0

Thử loại trừ này nếu nó tồn tại như một sự phụ thuộc ở đâu đó, và sử dụng Woodstox 4.2.0:

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

tôi phải đối mặt với cùng một vấn đề trong JDeveloper và đó đã được giải quyết bằng cách thêm "woodstox-core-asl-4.2 .1.jar "tới classpath.

0

tôi đã phải đối mặt với cùng một vấn đề nhưng việc triển khai nó vào lĩnh vực web, và sau khi một nghiên cứu của vài giờ tìm ra phiên bản chính xác cho woodstox, tức là dưới

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

liên kết https://bugs.eclipse.org/bugs/show_bug.cgi?id=409070 này cũng giúp figured it out .

Cả khách hàng Java và .Net đều hoạt động tốt.