2012-08-28 12 views
0

我使用JAX-WS創建了一個簡單的Web服務,但我期待一個惱人的問題。JBoss AS7中的JAX-WS獲取拋出異常

我的web服務代碼是這樣的:

@WebService 
public class UpdateList implements IUpdateList { 

    public UpdateList() { 
    } 

    @Override 
    public Collection<Long> getFrom(Long version) { 
     System.out.println("test"); 
     return new ArrayList<Long>(); 
    } 

} 

我生成的客戶端代碼wsimport,並創建了一個簡單的主吧:

public class App { 

    public static void main(String[] args) { 
     System.out.println(new UpdateListService().getUpdateListPort().getFrom(183L)); 
    } 
} 

但是,當我運行它,我得到了一個無法解釋的類拋出異常:

Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) 
    at $Proxy29.getFrom(Unknown Source) 
    at com.test.App.main(App.java:8) 
Caused by: java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.internal.bind.api.JAXBRIContext 
    at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.<clinit>(Unknown Source) 
    ... 5 more 

然後,我才意識到它coul d是一些依賴性衝突,所以我運行了mvn dependency:tree,它很乾淨,我的唯一代表就是hibernate,guava,guice和jaxws-rt。 (你可以看到,在我的web服務示例中,它沒有使用任何引用的依賴關係,但我會盡快解決此問題)。

好,完整列表,客戶端:

+- com.google.guava:guava:jar:13.0:compile 
+- com.google.inject:guice:jar:3.0:compile 
| +- javax.inject:javax.inject:jar:1:compile 
| \- aopalliance:aopalliance:jar:1.0:compile 
+- log4j:log4j:jar:1.2.17:compile 
+- junit:junit:jar:4.10:test 
| \- org.hamcrest:hamcrest-core:jar:1.1:test 
+- com.sun.xml.bind:jaxb-impl:jar:2.2.6:compile 
+- org.hsqldb:hsqldb:jar:2.2.8:test 
+- com.google.inject.extensions:guice-persist:jar:3.0:compile 
+- org.hibernate:hibernate-entitymanager:jar:4.1.6.Final:compile 
| +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile 
| +- org.hibernate:hibernate-core:jar:4.1.6.Final:compile 
| | \- antlr:antlr:jar:2.7.7:compile 
| +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile 
| +- dom4j:dom4j:jar:1.6.1:compile 
| +- org.javassist:javassist:jar:3.15.0-GA:compile 
| \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile 
+- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile 
+- mysql:mysql-connector-java:jar:5.1.21:compile 
\- commons-lang:commons-lang:jar:2.6:compile 

和服務:

+- com.sun.xml.ws:jaxws-rt:jar:2.2.6-2:compile 
| +- javax.xml.ws:jaxws-api:jar:2.2.8:compile 
| | +- javax.xml.bind:jaxb-api:jar:2.2.4:compile 
| | +- javax.xml.soap:saaj-api:jar:1.3.4:compile 
| | +- org.glassfish:javax.annotation:jar:3.1.1:runtime 
| | \- javax.jws:jsr181-api:jar:1.0-MR1:runtime 
| +- com.sun.xml.messaging.saaj:saaj-impl:jar:1.3.18:compile 
| +- com.sun.xml.stream.buffer:streambuffer:jar:1.4:compile 
| | +- javax.xml.stream:stax-api:jar:1.0-2:compile 
| | \- javax.activation:activation:jar:1.1:compile 
| +- org.codehaus.woodstox:woodstox-core-asl:jar:4.1.2:compile 
| +- org.codehaus.woodstox:stax2-api:jar:3.1.1:compile 
| +- org.jvnet.mimepull:mimepull:jar:1.8:compile 
| +- com.sun.xml.ws:policy:jar:2.3.1:compile 
| | +- com.sun.xml.txw2:txw2:jar:20110809:compile 
| | | \- relaxngDatatype:relaxngDatatype:jar:20020414:compile 
| | \- com.sun.istack:istack-commons-runtime:jar:2.4:compile 
| +- org.jvnet.staxex:stax-ex:jar:1.7:compile 
| +- org.glassfish.gmbal:gmbal-api-only:jar:3.1.0-b001:compile 
| | \- org.glassfish.external:management-api:jar:3.0.0-b012:compile 
| \- org.glassfish.ha:ha-api:jar:3.1.8:compile 
+- com.google.guava:guava:jar:13.0:compile 
+- com.google.inject:guice:jar:3.0:compile 
| +- javax.inject:javax.inject:jar:1:compile 
| \- aopalliance:aopalliance:jar:1.0:compile 
+- log4j:log4j:jar:1.2.17:compile 
+- junit:junit:jar:4.10:test 
| \- org.hamcrest:hamcrest-core:jar:1.1:test 
+- com.sun.xml.bind:jaxb-impl:jar:2.2.6:compile 
+- org.hsqldb:hsqldb:jar:2.2.8:test 
+- com.google.inject.extensions:guice-persist:jar:3.0:compile 
+- org.hibernate:hibernate-entitymanager:jar:4.1.6.Final:compile 
| +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile 
| +- org.hibernate:hibernate-core:jar:4.1.6.Final:compile 
| | \- antlr:antlr:jar:2.7.7:compile 
| +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile 
| +- dom4j:dom4j:jar:1.6.1:compile 
| +- org.javassist:javassist:jar:3.15.0-GA:compile 
| \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile 
+- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile 
+- mysql:mysql-connector-java:jar:5.1.21:compile 
\- commons-lang:commons-lang:jar:2.6:compile 

我結束本以爲是一些配置或者jar文件在我的JBoss失蹤..我做了一些研究,但沒有發現任何相關的。

有人已經通過了這個?任何建議?謝謝

回答

1

它看起來像是捆綁了一個JAXP實現com.sun.xml.bind:jaxb-impl:jar:2.2.6:compile。嘗試將範圍更改爲<scope>provided</scope>com.sun.xml.ws:jaxws-rt:jar:2.2.6-2:compile也一樣。

實際上,大部分應該提供。

+0

就是這樣!非常感謝你。 – caarlos0