我有3个使用netbean 6.9创建的Web服务
当我在工作中使用计算机时,它运行顺畅,没有错误 . 但是,当我将netbean项目复制到我家的计算机时,它运行时出现错误,如下所示 .
SEVERE: WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: Unable to create JAXBContext
javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:166)
at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:94)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:258)
at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:338)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:201)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:505)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:253)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:147)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:124)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1276)
at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
this problem is related to the following location:
at java.lang.StackTraceElement
at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
at java.lang.Throwable
at public java.lang.Throwable[] com.factbook.webservice.jaxws.ExceptionBean.suppressed
at com.factbook.webservice.jaxws.ExceptionBean
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:153)
... 30 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
this problem is related to the following location:
at java.lang.StackTraceElement
at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
at java.lang.Throwable
at public java.lang.Throwable[] com.factbook.webservice.jaxws.ExceptionBean.suppressed
at com.factbook.webservice.jaxws.ExceptionBean
at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:472)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:106)
at com.sun.xml.ws.developer.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:109)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:161)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:154)
... 32 more
8 回答
我在Java 7(Java 1.7)上遇到了这个问题 . 通过从类路径中删除webservices-api-2.0.1.jar来解决它 .
此URL对此异常的根本原因有更深入的解释
https://issues.apache.org/jira/browse/CXF-4754
本质上,应用程序期望的webservices jar版本与类加载器加载的内容存在冲突 . 我们遇到了类似的问题,其中应用程序可以在Tomcat中运行但在Weblogic中出错
我们最终在war的WEB-INF文件夹中创建了一个weblogic.xml,其中包含以下容器描述符
正如您所看到的,我们要求weblogic遵守应用程序附带的webservices包,并忽略weblogic包的weblogic包
希望这可以帮助 .
我有同样的问题,但我只是要删除异常,因为我抛出一个非通用的异常,如JAXBException,然后创建一个返回自定义异常的EndPoint,如下所示:
我的Exception类是这样的:
在我的服务接口Implements中,我捕获所有Specifics Exception并将MyException抛出到 endpoints .
这是一般例外; "Unable to create JAXBContext"
如果映射有问题,则在将Java对象转换为XML时会产生JAXB错误,反之亦然 .
[ServiceWSDL_URL_mesajUzunlu ğ u] [1]
我收到此错误,因为在我的映射中有一个非ASCII字符 . 'ğ' . 不幸的是,即使是认真的提供商也提供使用http://tempuri.org作为命名空间的Web服务 . 正确的做法是使用服务 endpoints URL . 无论如何 . 这为Web客户端代理类生成 org.tempuri 包 . 当存在多个使用Web服务提供者的tempuri.org并且您相应地生成您的类时,您的jar将被编译为org.tempuri以用于多个服务 . 然后会发生什么?即使这个非ascii字符仅针对特定服务发生,我的所有客户都开始惊讶地发出此错误 . 我通过仔细研究Call Stack来发现真正的原因 . 我不明白为什么这些严肃的组织,如部委或电信公司使用tempuri.org .
我的建议是寻找非ASCII字符,仔细阅读StackTrace并在编写客户端时考虑org.tempuri .
环境:Java 1.7,没有webservices-api-2.0.1.jar,最新的jaxb-imp.jar
对于这个问题的特殊情况,上面的陈述使我们理解了以下的stackTrace元素,有一个错误无法转移给我们 . 因为Object < - > XML序列化 .
唯一要做的就是通过熟悉的stacktrace元素并使用Soap UI类工具进行调查 . 如果我们是服务的所有者,最好返回serialize-OK元素,例如JSON字符串或自定义XML映射元素 .
我有同样的例外 . 我的服务类是由CXF生成的,当我调用服务方法时,它说的是“28个IllegalAnnotationExceptions计数” . 因为该服务有14个方法和2个包装类(
responseWrapper
,requestWrapper
) . 问题是我的项目没有Cxf
库引用 . 只需添加这些(我使用的是2.7.5版本):如果您的类被其他项目使用,请更改您的类以实现java.io.Serializable . 这解决了我的问题 .
对于不同的Java项目,在升级到Java 7之后,我也经历过
结果证明是一个问题 . 解决方案是在相应的pom.xml文件中将所有发音版本号1.25替换为1.26 .