[Web Services] WSDL Location - Java

pee2002

Power Member
Boa noite,

Para uma disciplina da faculdade estou a tentar fazer um webservice em Java usando o Netbeans.

Como é que fiz o Web Service:
- Novo projecto do tipo "Web Application"
- Criei um novo Web Service (Right Click -> New -> Web Service). Chamei-o MessengerWS.

Conteudo:

Código:
@WebService()
public class MessengerWS {

    /**
     * Web service operation
     */
    @WebMethod(operationName = "add")
    public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
        //TODO write your implementation code here:
        int k = i +j;
        return k;
    }
}


De seguida criei o Cliente:

- Novo projecto do tipo "Java Application"
- Criei um novo Web Service Client (Right Click -> New -> Web Service Client). Chamei-o MessengerWS.
- Escolhi a opção WSDL URL e introduzi o seguinte:
Código:
http://localhost:8080/SID_TP3_Server/MessengerWS?wsdl

O conteúdo para consumir o Serviço é:

Código:
try { // Call Web Service Operation
	org.me.messenger.MessengerWSService service = new org.me.messenger.MessengerWSService();
 	org.me.messenger.MessengerWS port = service.getMessengerWSPort();
 	// TODO initialize WS operation arguments here
 	int i = 10;
 	int j = 5;
 	// TODO process result here
 	int result = port.add(i, j);
 	System.out.println("Result = "+result);
} catch (Exception ex) {
 	// TODO handle custom exceptions here
}

Meti isto a funcionar mesmo flawless mas agora a questão é a seguinte:
Como é que mudo o "WSDL location" no próprio código? (eu sei mudar através do Netbeans mas não é esse o objectivo visto que quando a aplicação abre tem uma textbox do IP do servidor que vou usar para construir a minha WSDL Location)
 
Não sei o esquema de nomes que o Netbeans dá aos artefactos gerados, mas experimenta algo deste tipo:
Código:
WebServiceClient wsc = MessengerWSService.class.getAnnotation(WebServiceClient.class) ;
MessengerWSService service = new MessengerWSService(new URL("http://localhost:8080/SID_TP3_Server/MessengerWS?wsdl"), new QName(wsc.targetNamespace(), wsc.name())) ;
MessengerWS proxy = service.getMessengerWSPort() ;

(....)
 
É isso mesmo!!

Muitissimo obrigado!

Código:
import javax.xml.namespace.QName;
import javax.xml.ws.WebServiceClient;
import org.me.messenger.MessengerWSService;
import org.me.messenger.MessengerWS;


Código:
try {
 	WebServiceClient wsc = MessengerWSService.class.getAnnotation(WebServiceClient.class);
 	MessengerWSService service = new MessengerWSService(new URL("http://localhost:8080/SID_TP3_Server/MessengerWS?wsdl"), new QName(wsc.targetNamespace(), wsc.name()));

 	MessengerWS proxy = service.getMessengerWSPort();

 	System.out.println(proxy.add(10, 10));

} catch (Exception e) {
 	System.err.println("ERRO: "+e);
}
 
Back
Topo