3

我创建了一个 jaxws Web 服务。我完全按照网址

服务完美无误。但是服务器在请求命中时出错。

SEVERE: caught throwable
java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext
    at com.sun.xml.ws.db.glassfish.JAXBRIContextFactory.newContext(JAXBRIContextFactory.java:74)
    at com.sun.xml.ws.spi.db.BindingContextFactory.create(BindingContextFactory.java:149)
    at com.sun.xml.ws.message.jaxb.JAXBMessage.create(JAXBMessage.java:160)
    at com.sun.xml.ws.fault.SOAPFaultBuilder.createSOAP11Fault(SOAPFaultBuilder.java:433)
    at com.sun.xml.ws.fault.SOAPFaultBuilder.createSOAPFaultMessage(SOAPFaultBuilder.java:210)

我检查了 stackoverflow 和许多其他网站都说 jar 文件冲突。
我使用 java-6-openjdk。
以下是我在码头服务器中的 jar 文件列表。

gmbal-api-only.jar
ha-api.jar
jaxb-core.jar
jaxb-impl.jar
jaxws-rt.jar
management-api.jar
policy-2.3.1.jar
stax-ex.jar
streambuffer-1.5.1。罐

由于上述 jars 不起作用,我尝试使用
Go here
下载 JAX-WS RI 分发。

但是那些罐子给出了同样的错误。

4

3 回答 3

3

我也遇到了同样的异常,并通过谷歌搜索确认这是由于类路径/jar 问题。

我使用 Java 6.0 作为构建和运行时环境,我的项目设置有jaxb-api.jar 和 jaxb-impl.jar我只是从类路径中删除了这两个罐子,它就可以工作了。

就好像我们拥有 Java 6.0 一样,我们不需要显式地使用 JAX 绑定 jar。它在 Java 6.0 中默认提供。

于 2014-09-05T10:30:53.630 回答
1

检查此线程:Web 服务的 Web 客户端。我认为的主要问题是您有几个版本不同的 jaxb jar。例如,我认为 jaxb 已经是 jaxws-rt.jar 的一部分,这意味着您不需要 jaxb-core.jar 和 jaxb-impl.jar。

于 2013-06-15T14:20:28.860 回答
1

我的 Java 7 项目也发生了同样的错误。删除 com/sun/xml/bind/jaxb-impl-2.2.6.jar com/sun/xml/bind/jaxb-xjc-2.2.6.jar

依赖解决了这个问题。

替代解决方案:

clientPort 是一个带有@WebService 注解的接口。

    BindingProvider prov = (BindingProvider) clientPort;        
    prov.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointUrl);
    prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, serviceUsername);
    prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, servicePassword);
于 2021-07-29T14:32:39.263 回答