Erro na construção de Web Service

Pessoal, estou no trabalho e me deparei com tal erro:

Out 17, 2012 9:38:21 AM org.apache.catalina.core.StandardContext listenerStart
Grave: Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:139)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:559)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1399)
at sun.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791)
at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)
at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:849)
at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:351)
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:563)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: 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)
… 35 more
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 java.lang.Exception
at java.sql.SQLException
at private java.sql.SQLException webService.jaxws.SQLExceptionBean.nextException
at webService.jaxws.SQLExceptionBean

at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:153)
... 43 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 java.lang.Exception
at java.sql.SQLException
at private java.sql.SQLException webService.jaxws.SQLExceptionBean.nextException
at webService.jaxws.SQLExceptionBean

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)
... 45 more

Alguém sabe o que pode ser ??

Acabei de fazer um, acompanhando um tutorial e deu certo, mas qnd coloco meu método aparece esse erro…

Att, Rodrigo Sena

Poste a classe que tem o método que você está disponibilizando.

package webService;

import DAO.ExcecaoConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
*

  • @author rodrigo
    */
    @WebService(serviceName = “WebServiceCep”)
    public class WebServiceCep {

    /**

    • Operação de Web service
      */
      @WebMethod(operationName = “add”)
      public int add(@WebParam(name = “a”) int a, @WebParam(name = “b”) int b) {
      a = 0;
      b = 5;
      return a + b;
      }

    /**

    • Operação de Web service
      */

      Connection con;
      PreparedStatement prepSt = null;

    @WebMethod(operationName = “buscarCep”)
    public Cep buscarCep(@WebParam(name = “cep”) int cep) throws ExcecaoConexao, SQLException {

     Cep c = null;
     PreparedStatement prepStm = null;
     String sql = "";
    
     sql = "SELECT * " +
             ""+
             "FROM bairros, logradouros, cidades, uf" +
             "where id=?";
     try {
    
         con.setAutoCommit(false);
    
    
         prepStm = con.prepareStatement(sql);
         prepStm.setInt(1, cep);
         prepStm.execute();
         ResultSet rs = prepStm.executeQuery();
         if(rs.next()){
             c = new Cep();
             c.setBairro(rs.getString("ds_bairro_nome"));
             c.setCidade(rs.getString("ds_cidade_nome"));
             c.setLogradouro(rs.getString("ds_logradouro_nome"));
             c.setUf(rs.getString("ds_logradouro_nome"));
         }
         
         prepStm.close();
    
         this.con.setAutoCommit(true);
    
     } catch (SQLException ex) {
         throw new ExcecaoConexao(ex.getMessage());
     }finally{
         if(!this.con.isClosed()){
             this.con.close();
         }
     }
     return c;
    

    }

}

Quando eu comento a função “buscarCep” ele roda só com o add …

Por favor, sempre que for postar código, poste entre as tags

package webService;

import DAO.ExcecaoConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
 *
 * @author rodrigo
 */
@WebService(serviceName = "WebServiceCep")
public class WebServiceCep {

    /**
     * Operação de Web service
     */
    @WebMethod(operationName = "add")
    public int add(@WebParam(name = "a") int a, @WebParam(name = "b") int b) {
         a = 0;
         b = 5;
        return a + b;
    }
    
    

    /**
     * Operação de Web service
     */
   
    
        Connection con;
        PreparedStatement prepSt = null;    
    
    @WebMethod(operationName = "buscarCep")
    public Cep buscarCep(@WebParam(name = "cep") int cep) throws ExcecaoConexao, SQLException {
        

        
        Cep c = null;
        PreparedStatement prepStm = null;
        String sql = "";

        sql = "SELECT * " +
                ""+
                "FROM bairros, logradouros, cidades, uf" +
                "where id=?";
        try {

            con.setAutoCommit(false);


            prepStm = con.prepareStatement(sql);
            prepStm.setInt(1, cep);
            prepStm.execute();
            ResultSet rs = prepStm.executeQuery();
            if(rs.next()){
                c = new Cep();
                c.setBairro(rs.getString("ds_bairro_nome"));
                c.setCidade(rs.getString("ds_cidade_nome"));
                c.setLogradouro(rs.getString("ds_logradouro_nome"));
                c.setUf(rs.getString("ds_logradouro_nome"));
            }
            
            prepStm.close();

            this.con.setAutoCommit(true);

        } catch (SQLException ex) {
            throw new ExcecaoConexao(ex.getMessage());
        }finally{
            if(!this.con.isClosed()){
                this.con.close();
            }
        }
        return c;
    }
     
}

O que eu quero rodar é a buscarCep, e qnd eu comento ela consigo implementar …

Quando comenta consegue implementar? Não entendi. :shock:

Da onde vem essa instância de Connection? pra mim ela nem está sendo instanciada.

Eu comento o buscarCep e deixo apenas a “add” que eu fiz pra teste, aí consigo implementar o webservice

E não está dando nenhum erro de syntax não, tanto é que eu limpo e construo numa boa, mas na hora de implementar o ws ele gera esse ero :frowning:

Tudo bem, mas quem instancia o Connection? eu não vi um new aí em nenhum lugar.

A classe SQLException de fato não pode ser mapeada com JAXB. Sugiro que você troque por alguma exceção (sua) que você possa usar para fazer o mapeamento.

[]'s