2011-07-07 11 views
12

Escribí un servicio web y traté de lanzar mi excepción personalizada, pero recibo un error por favor ayúdame a resolverlo.cómo usar JAX-WS webfault

import javax.jws.WebService; 
import javax.xml.ws.Endpoint; 

@WebService(name = "WebService") 
public class WebServiceTest { 
    public String sayHello(String name) throws InvalidInputException { 
     throw new InvalidInputException("I am testing", null); 
    } 
    public static void main(String[] args) { 
     WebServiceTest server = new WebServiceTest(); 
     Endpoint endpoint = Endpoint.publish(
       "http://localhost:9191/webServiceTest", server); 
    } 
} 


import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlType; 

@XmlType(name = "InputMessageValidationFaultType") 
public class FaultBean { 

    @XmlAttribute 
    protected String msg; 

    public String getMsg() { 
     return msg; 
    } 

    public void setMsg(String value) { 
     this.msg = value; 
    } 

} 


import javax.xml.ws.WebFault; 

@WebFault(faultBean = "mytest.com.inc.FaultBean") 
public class InvalidInputException extends Exception { 

    private static final long serialVersionUID = 1L; 

    private FaultBean faultBean; 

    public InvalidInputException() { 
     super(); 
    } 

    public InvalidInputException(String message, FaultBean faultBean, 
      Throwable cause) { 
     super(message, cause); 
     this.faultBean = faultBean; 
    } 

    public InvalidInputException(String message, FaultBean faultBean) { 
     super(message); 
     this.faultBean = faultBean; 
    } 

    public FaultBean getFaultInfo() { 
     return faultBean; 
    } 
} 

ERROR MENSAJE Excepción en hilo "principal" java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName() Ljava/lang/cadena; en com.sun.xml.ws.model.RuntimeModeler.processExceptions (RuntimeModeler.java:1162) en com.sun.xml.ws.model.RuntimeModeler.processDocWrappedMethod (RuntimeModeler.java:898) en com.sun. xml.ws.model.RuntimeModeler.processMethod (RuntimeModeler.java:666) en com.sun.xml.ws.model.RuntimeModeler.processClass (RuntimeModeler.java:420) en com.sun.xml.ws.model. RuntimeModeler.buildRuntimeModel (RuntimeModeler.java:254) en com.sun.xml.ws.server.EndpointFactory.createSEIModel (EndpointFactory.java:338) en com.sun.xml.ws.server.EndpointFactory.createEndpoint (EndpointFactory. java: 201) en com.sun.xml.ws.api.server.WSEndpoint.create (WSEndpoint.java:505) en com.sun.xml.ws.transport.http.server.EndpointImpl.createEndp oint (EndpointImpl.java:257) en com.sun.xml.ws.transport.http.server.EndpointImpl.publish (EndpointImpl.java:181) en com.sun.xml.ws.spi.ProviderImpl.createAndPublishEndpoint (ProviderImpl.java:123) en javax.xml.ws.Endpoint.publish (Endpoint.java:170) en mytest.com.inc.WebServiceTest.main (WebServiceTest.java:13)

Respuesta

12

última vez que vi este error, fue debido a una falta de coincidencia de la versión de JAX-WS utilizada (2.1.x y 2.2.x) Usted está tal vez compilando contra la versión 2.1.x. pero corriendo contra 2.2.x, o al revés.

Tenga en cuenta que el JDK 6 incluye la versión 2.1.x de JAX-WS, por lo que puede que tenga que utilizar el mecanismo de la biblioteca aprobado para forzar el uso de 2.2.x

+0

estoy usando la versión 2.1.10 ** **. ¿Puede decirme cómo obtengo la versión ** 2.2.x **, cómo usarla ya que implementaré esto en tomcat y no como un simple programa de Java. ** Muchas gracias ** – Arvind

+1

hasta donde yo sé, las últimas versiones de la implementación de referencia JAX-WS son 2.1.7 y 2.2.3 y se pueden encontrar allí: http://jax-ws.java.net/ – gastush