1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

[Web Services] WSDL Location - Java

Discussão em 'Programação' iniciada por pee2002, 2 de Junho de 2009. (Respostas: 2; Visualizações: 1416)

  1. pee2002

    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)
     
  2. PrOdG

    PrOdG Power Member

    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() ;
    
    (....)
    
     
  3. pee2002

    pee2002 Power Member

    É 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);
    }
     

Partilhar esta Página