我有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
答案 0 :(得分:1)
我在Java 7(Java 1.7)上遇到过这个问题。通过从类路径中删除webservices-api-2.0.1.jar来解决它。
答案 1 :(得分:1)
此网址更深入地解释了此异常的根本原因
答案 2 :(得分:1)
本质上,应用程序期望的webservices jar版本与类加载器加载的内容存在冲突。我们遇到了类似的问题,即应用程序可以在Tomcat中运行但在Weblogic中出错
我们最终在战争的WEB-INF文件夹中创建了一个weblogic.xml,其中包含以下容器描述符
**<prefer-application-packages>
<package-name>javax.xml.ws.*</package-name>
<package-name>com.sun.xml.ws</package-name>
</prefer-application-packages>**
正如您所看到的,我们要求weblogic遵守应用程序附带的webservices包,并忽略weblogic包的weblogic版本
希望这有帮助。
答案 3 :(得分:1)
我有同样的问题,但我只是要删除异常,因为我抛出了一个非通用的异常,如JAXBException,然后创建一个返回自定义异常的EndPoint:
@WebService
public class MyEndPoint {
@WebMethod
public String myOperation(String xmlString) throws MyException {
...
return null;
}
}
我的Exception类是这样的:
public class MyException extends Exception {
private String message;
public String getMessage() {
return super.getMessage();
}
public MyException(String message) {
super(message);
}
}
在我的服务接口Implements中,我捕获所有Specifics Exception并将MyException抛出到端点。
答案 4 :(得分:0)
这是一般例外; “无法创建JAXBContext”
如果映射有问题,则在将Java对象转换为XML时会产生JAXB错误,反之亦然。
方法 mesajUzunlu » u()生成客户端包含方法和错误 映射。除此之外 tempuri.org targetNamespace完全破坏了其他 使用此命名空间的服务 @(“mesajUzunl u \ u011f 你好”)这个字符串在ununicode表示中与ğ不匹配,我们cat无法创建JAXBContext错误
[ServiceWSDL_URL_mesajUzunlu <强“G 强>ü] [1]
我收到此错误,因为在我的映射中存在非ASCII字符。 'ğ'。
不幸的是,即使是认真的提供者也提供使用http://tempuri.org作为命名空间的Web服务。正确的做法是使用服务端点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
JAXB 代表XML绑定的Java架构。它习惯了 将XML转换为java对象,将java对象转换为XML.JAXB定义API 用于从XML文档读取和写入Java对象。不相似 SAX和DOM,我们不需要了解XML解析技术
对于这个问题中的特殊情况,上面的陈述使我们理解了下面的stackTrace元素,有一个错误无法转移给我们。因为Object&lt; - &gt; XML序列化。
java.lang.StackTraceElement没有no-arg默认值 构造
唯一要做的就是熟悉堆栈跟踪元素并使用Soap UI类工具进行调查。如果我们是服务的所有者,最好返回serialize-OK元素,例如JSON字符串或自定义XML映射元素。
答案 5 :(得分:0)
如果您的类被另一个项目使用,请更改您的类以实现java.io.Serializable。这解决了我的问题。
答案 6 :(得分:-2)
对于不同的Java项目,升级到Java 7之后,我也遇到了
错误:[core] java.lang.StackTraceElement:TypeDefinition必须有一个no-arg构造函数或者用工厂方法注释。
结果证明是一个问题。解决方案是在相应的pom.xml文件中将所有发音版本号1.25替换为1.26。