No se puede crear JAXBContext creando mi wsdl

Estoy intentando generar mi WSDL para los servicios web, pero me sale este error:

 Nota: ap ronda: 2
 Excepción en el hilo "main" javax.xml.ws.WebServiceException: no se puede crear JAXBContext
         en com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext (AbstractSEIModelImpl.java:153)
         en com.sun.xml.internal.ws.model.AbstractSEIModelImpl.postProcess (AbstractSEIModelImpl.java:83)
         en com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel (RuntimeModeler.java:244)
         en com.sun.tools.internal.ws.wscompile.WsgenTool.buildModel (WsgenTool.java:229)
         en com.sun.tools.internal.ws.wscompile.WsgenTool.run (WsgenTool.java:112)
         at sun.reflect.NativeMethodAccessorImpl.invoke0 (Método nativo)
         at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
         en java.lang.reflect.Method.invoke (Method.java:597)
         en com.sun.tools.internal.ws.Invoker.invoke (Invoker.java:105)
         en com.sun.tools.internal.ws.WsGen.main (WsGen.java:41)
 Causado por: java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 conteos de IllegalAnnotationExceptions
 java.lang.StackTraceElement no tiene un constructor predeterminado no-arg.
         este problema está relacionado con la siguiente ubicación:
                 en java.lang.StackTraceElement
                 en public java.lang.StackTraceElement [] java.lang.Throwable.getStackTrace ()
                 en java.lang.Throwable
                 en java.lang.Exception
                 en java.sql.SQLException
                 en private java.sql.SQLException wsdb.jaxws.SQLExceptionBean.nextException
                 en wsdb.jaxws.SQLExceptionBean

         en java.security.AccessController.doPrivileged (método nativo)
         en com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext (AbstractSEIModelImpl.java:140)
         ... 10 más
 Causado por: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 conteos de IllegalAnnotationExceptions
 java.lang.StackTraceElement no tiene un constructor predeterminado no-arg.
         este problema está relacionado con la siguiente ubicación:
                 en java.lang.StackTraceElement
                 en public java.lang.StackTraceElement [] java.lang.Throwable.getStackTrace ()
                 en java.lang.Throwable
                 en java.lang.Exception
                 en java.sql.SQLException
                 en private java.sql.SQLException wsdb.jaxws.SQLExceptionBean.nextException
                 en wsdb.jaxws.SQLExceptionBean

         en com.sun.xml.internal.bind.v2.runtime.IllegalAnntionsException $ Builder.check (IllegalAnnotationsException.java:91)
         en com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet (JAXBContextImpl.java:436)
         en com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl. (JAXBContextImpl.java:277)
         en com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl $ JAXBContextBuilder.build (JAXBContextImpl.java:1100)
         en com.sun.xml.internal.bind.v2.ContextFactory.createContext (ContextFactory.java:143)
         en com.sun.xml.internal.bind.api.JAXBRIContext.newInstance (JAXBRIContext.java:95)
         en com.sun.xml.internal.ws.developer.JAXBContextFactory $ 1.createJAXBContext (JAXBContextFactory.java:97)
         en com.sun.xml.internal.ws.model.AbstractSEIModelImpl $ 1.run (AbstractSEIModelImpl.java:148)
         en com.sun.xml.internal.ws.model.AbstractSEIModelImpl $ 1.run (AbstractSEIModelImpl.java:140)
         ... 12 más

Vi algunas discusiones en Internet sobre esto, comencé con construir un constructor para todas las clases hasta crear otra especificación xml. La verdad es que no hay una respuesta real para esto o las soluciones que pruebo no funcionan.

Leí una discusión aquí sobre este problema, pero no fue resuelto y no sé cómo resolverlo. Si alguien tiene una idea sobre esto, lo agradezco tanto que me envía a la dirección correcta para evitar esto.

Estoy utilizando Debian Squezze, Java 1.6_20, JAX-WS JAX-WS RI 2.1.6 en JDK 6 y wsgen para generar el wsdl. El primer paso que corrigió fue generar el directorio jaxws con clases de bean.

Throwable objetos que se pueden StackTraceElement (esto significa excepciones y errores) no se pueden transferir directamente, porque no se pueden serializar a XML (el StackTraceElement no tiene un constructor no-arg, que es requerido por JAXB).

Tienes que usar fallas SOAP para eso. Ver esta pregunta Le indica la anotación @WebFault que debe incluir en su clase de excepción. (También es probable que verifique esto y esto )

Domenic D. tenía la respuesta correcta que funcionó para mí, pero me gustaría ampliarla.

Mi proyecto Maven fue muy bien construido con JDK 6, pero cuando cambié para usar JDK 1.7 como mi predeterminado, la comstackción se rompió. Al agregar una dependencia jaxb-impl explícita con la versión, funcionó, como por ejemplo:

  org.jvnet.jax-ws-commons jaxws-maven-plugin 2.1   com.sun.xml.bind jaxb-impl 2.2.6     ...    

Respecto a la versión: Este error se encuentra en https://java.net/jira/browse/JAXB-814 . Se corrigió para las versiones 2.2.4u2, 2.2.5, 2.3

He resuelto este problema al arreglar la versión de jaxb-impl de 2.1.9 a 2.2.6 y funciona bien ahora

  com.sun.xml.bind jaxb-impl 2.2.6  

Parece que una parte de su API declarada incluye un tipo que extiende un tipo con un campo interno de tipo StackTraceElement [].

Como StackTraceElement no tiene un constructor de argumentos cero, JAXB no puede deserializar las instancias de esta clase.

Intente eliminar el campo nextException de SQLExceptionBean o elimine los parámetros de tipo SQLExceptionBean de sus API de servicio.

Se sabe que JAXB no puede organizar ninguna clase de Excepción / Lanzamiento debido al hecho de que StackTrace no tiene un constructor predeterminado. Lo que puede hacer es crear su propia clase de Excepción que se extienda de decir en su ejemplo, WebServiceException. En su clase, anule los métodos que usarían StackTrace y agregue la anotación @XmlTransient a ellos. Siempre que use JAXB 2.2.4u2 +, Marshaller obedecerá la anotación @XmlTrasient en su clase personalizada.

Detalles adicionales están disponibles en http://java.net/jira/browse/JAXB-814 que describe el defecto donde @XmlTransient no funcionó bien en las subclases.

A continuación se muestra una clase de muestra que funcionará correctamente:

 package com.stackoverflow.7232331; import javax.ws.rs.core.Response.Status; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @XmlRootElement public class CustomException extends RuntimeException { /** * */ private static final long serialVersionUID = -672804070691541883L; protected String reason; protected Status status; protected int errorCode; public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } public int getErrorCode() { return errorCode; } public void setErrorCode(int errorCode) { this.errorCode = errorCode; } public CustomException(Status status, String message, String reason, int errorCode) { super(message); this.reason = reason; this.status = status; this.errorCode = errorCode; } public CustomException() { super(); } @XmlTransient @Override public StackTraceElement[] getStackTrace() { return super.getStackTrace(); } @XmlTransient @Override public Throwable getCause() { return super.getCause(); } } 

Si usa Maven, necesitará esta dependencia:

  com.sun.xml.bind jaxb-impl 2.2.5  

Tenga en cuenta que no tiene que crear una excepción personalizada. Solo necesita usar la versión correcta de JAXB cuando genera sus clases. Por ejemplo:

  org.codehaus.mojo jaxws-maven-plugin 1.12   com.sun.xml.bind jaxb-impl 2.2.5     ...    

¡También tuve este problema! ¡EXACTAMENTE el mismo!

VEA ESTE ERROR,

  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 

Revisé mi código y revisé el motivo

  @WebMethod(operationName = "reportnewplace") public String reportnewplace(@WebParam(name = "xcmc") String xcmc, @WebParam(name = "address") String address, @WebParam(name = "lon") String lon, @WebParam(name = "lat") String lat, @WebParam(name = "UID") String UID) throws SQLException{ 

Un método web no debería arrojar una excepción, eliminar resolverá este problema de forma simple, si insiste en hacerlo, siga la primera respuesta de @Bozho.

Resolví este problema agregando un SOAPBinding en la parte superior de mi interfaz:

 public interface xxxWebServiceImpl { @SOAPBinding(style = SOAPBinding.Style.RPC) }