Edw*_*aws 20 java web-services jax-ws wsgen
我正在尝试为webservices生成我的WSDL,但是我收到此错误:
Note: ap round: 2
Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:153)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:83)
at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:244)
at com.sun.tools.internal.ws.wscompile.WsgenTool.buildModel(WsgenTool.java:229)
at com.sun.tools.internal.ws.wscompile.WsgenTool.run(WsgenTool.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:105)
at com.sun.tools.internal.ws.WsGen.main(WsGen.java:41)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.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 java.lang.Exception
at java.sql.SQLException
at private java.sql.SQLException wsdb.jaxws.SQLExceptionBean.nextException
at wsdb.jaxws.SQLExceptionBean
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:140)
... 10 more
Caused by: com.sun.xml.internal.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 java.lang.Exception
at java.sql.SQLException
at private java.sql.SQLException wsdb.jaxws.SQLExceptionBean.nextException
at wsdb.jaxws.SQLExceptionBean
at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:436)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:277)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1100)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
at com.sun.xml.internal.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:95)
at com.sun.xml.internal.ws.developer.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:97)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:148)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:140)
... 12 more
我在互联网上看到了一些关于这一点的讨论,为所有类构建一个构造函数,直到创建另一个xml规范.事实是,没有一个真正的答案或我测试的解决方案不起作用.
我在这里读到了关于这个问题的讨论,但它没有终止,我不知道如何解决.如果有人对此有所了解,我非常感谢能将我加入到严格的方向以避免这种情况.
我在JDK 6和wsgen中使用Debian Squezze,Java 1.6_20,JAX-WS JAX-WS RI 2.1.6来生成wsdl.它做的第一步是正确的,用bean类生成jaxws目录.
小智 10
Domenic D.有正确的答案对我有用,但我想扩展它.
我的Maven项目使用JDK 6构建得很好,但是当我切换到使用JDK 1.7作为我的默认值时,构建就破坏了.通过添加显式的jaxb-impl依赖w /版本,它可以工作,例如:
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<dependencies>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.6</version>
</dependency>
</dependencies>
<executions>
<execution>
...
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
关于版本:此错误列在https://java.net/jira/browse/JAXB-814.它适用于2.2.4u2,2.2.5,2.3版本
小智 6
我已经通过将jaxb-impl版本从2.1.9修复到2.2.6解决了这个问题,现在可以正常工作
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.6</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
看起来您声明的 API 的一部分包含一个类型,该类型使用 StackTraceElement[ ] 类型的内部字段扩展了类型。
由于 StackTraceElement 没有零参数构造函数,因此 JAXB 无法反序列化此类的实例。
尝试从 SQLExceptionBean 中删除 nextException 字段,或从服务 API 中删除 SQLExceptionBean 类型的参数。
| 归档时间: |
|
| 查看次数: |
56908 次 |
| 最近记录: |