Web Service Client

9 respostas
R

Olá pessoal, estou precisando criar um client ws no JBoss, com jax-ws.
Peguei um exemplo implementado q tem no Netbeans, para aprender e ver funcionando, mas não consigo fazer rodar.
Vou passar o código

public class ClientServlet extends HttpServlet {
    @WebServiceRef(wsdlLocation = "http://localhost:8080/CalculatorApp/CalculatorWSService?wsdl")
    public CalculatorWSService service;
    
    @Resource
    protected WebServiceContext context;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<h2>Servlet ClientServlet at " + request.getContextPath () + "</h2>");
                
                org.me.calculator.client.CalculatorWS port = service.getCalculatorWSPort();
                
                int i = Integer.parseInt(request.getParameter("value1"));
                int j = Integer.parseInt(request.getParameter("value2"));

                int result = port.add(i, j);
             
                out.println("<br/>");
                out.println("Result:");
                out.println("" + i + " + " + j + " = " + result);
                ((Closeable)port).close();
            
        } finally { 
            out.close();
        }
    } 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
Ele abre no browser o Servlet, mas quando clica no botao pra chamar o ws ele da o seguinte erro:

13:14:45,455 ERROR [[ClientServlet]] Servlet.service() for servlet ClientServlet threw exception
java.lang.NullPointerException
at org.me.calculator.client.ClientServlet.processRequest(ClientServlet.java:65)
at org.me.calculator.client.ClientServlet.doGet(ClientServlet.java:96)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Alguém poderia me ajudar por favor?

Desde já agradeço!
Abraço!

9 Respostas

A

Dá uma olhada na linha 65 do seu servlet, seu objeto está nulo acho que é esse objeto

org.me.calculator.client.CalculatorWS port = service.getCalculatorWSPort();
R

Pois é, o problema é nessa chamada, service.getCalculatorWSPort();
mas como se instancia isso?

Estranho é que esse código é exemplo do netbeans, não deveria vir errado.

Alguém tem idéia de como solucionar?

A

Consulta essa url pelo seu navegador, acho que o serviço não est no ar!

http://localhost:8080/CalculatorApp/CalculatorWSService?wsdl

O container faz injeção desse cara?

@WebServiceRef(wsdlLocation = "http://localhost:8080/CalculatorApp/CalculatorWSService?wsdl")
public CalculatorWSService service;
R

No browser quando digito “http://localhost:8080/CalculatorApp/[color=red]CalculatorWS[/color]?wsdl” ele abre o wsdl via browser.

A

Então falta a injeção, acho que você tem que declara o descritor.

public CalculatorWSService service;
R

Desculpe a ignorância, mas como assim declarar o descritor?

public CalculatorWSService service;

Essa linha ja existe no código.

zoren

se for o projeto do netbeans

antes vc tem que fazer deploy do webservice, ai vc roda o cliente

Jair_Rillo_Junior

Está usando Netbeans, certo?

No site do netbeans tem alguns tutoriais de como fazer o que você precisa, inclusive screencast. Dê uma procurada lá.

ps: olhando rapidamente, achei esse post lá, espero que ajude: http://netbeans.org/kb/docs/websvc/jax-ws.html

R

Consegui!
Obrigado pessoal.
Abraço!

Criado 5 de janeiro de 2010
Ultima resposta 5 de jan. de 2010
Respostas 9
Participantes 4