pode JAX-WS métodos da web retornam objetos que possuem métodos estáticos?
-
13-09-2019 - |
Pergunta
public class Pojo {
private String value;
public static void printValue() {
System.out.println("value=" + value);
}
}
Eu gostaria de devolver este de um serviço web da seguinte forma:
@WebService
public class MyService {
@WebMethod
public Pojo getPojo() {
return new Pojo();
}
}
Parece que não consegue encontrar a resposta definitiva sobre se eu puder, deve, não pode, ou não deveria.
Solução
Apenas os dados são enviados através do fio. Os métodos estáticos ou não-estáticos não são enviados.
Se do lado do destinatário que você ligar os dados à mesma classe - bem, você tem os seus métodos de volta, mas o SOAP não tem nada a ver com isso, é a sua própria astúcia. Clientes escritos em outras linguagens (C #, Python, ...) não terá o seu método, é claro.
P.S. A classe de qualquer objeto que você está enviando de volta sempre tem métodos. Seu Pojo é implicitamente uma subclasse de Object, e assim ter toString (), hashCode (), e assim por diante. O JAX-WS não me importo.
Outras dicas
No. Pense nisso:
- Os serviços Web são destinadas a ser independente de plataforma
- O que é enviado através do fio é simplesmente XML (ou algum outro formato) de dados
Então, como você seria capaz de enviar através do fio um método estático? Como é que os clientes não-Java ser capaz de interpretar a resposta do seu serviço web?