Annotations e XFire um jeito simples de criar Web Services
Eu já falei um pouco de Web Services por aqui, mas ainda tem muita coisa a ser discutida e experimentada sobre este assunto.
Existem diversas formas de distribuir serviços na internet e a o número de ferramentas para tornar isto cada vez mais fácil aumentam constantemente. Pesquisando sobre conceitos e maneiras práticas para desenvolvimento encontrei no Blog dos Desenvolvedores da Caelum um jeito simples para criação de Web Services utilizando a especificação JSR-181 e JSR-224, achei interessantíssimo e não perdi tempo em fazer os testes.
A especificação permite que você crie serviços utilizando apenas Annotations.
import javax.jws.WebMethod;
import javax.jws.WebService;
import tucano.bean.Pessoa;
@WebService
public class PessoaWS {
private Pessoa[] list = new Pessoa[5];
public PessoaWS() {
list[0] = new Pessoa("M", "Luciano", "Silva");
list[1] = new Pessoa("F", "Priscila", "Carmo");
list[2] = new Pessoa("F", "Maria", "Conceição");
list[3] = new Pessoa("F", "Lucia", "Felix");
list[4] = new Pessoa("M", "Cristino", "José");
}
@WebMethod
public Pessoa[] listAll(){
return list;
}
}
Perceba que este Web Service foi criado de maneira extremamente simples apenas para demonstração, porém, o método retorna um tipo de dado complexo, isto para sair da monotonia.
Ainda o que os caras da Caelum, vamos fazer a publicação/ativação do serviço utilizando o XFire projeto relacionado ao Apache CXF
<!-- // X-Fire //---> <servlet> <servlet-name>XFireServlet</servlet-name> <display-name>XFire Servlet</display-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>services.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <!-- // //--->
Se você for seguir o site do projeto X-Fire, irá perceber que é sugerido a criação do arquivo no caminho META-INF/xfire/services.xml, isto não deu muito certo comigo, tentei diversas configurações e até percebi que é um bug em aberto para o projeto.
Para resolver o problema opite por colocar o arquivo de configuração services.xml na raíz do source [src/services.xml].
<beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>PessoaService</name> <namespace>http://xfire.codehaus.org/PessoaService</namespace> <serviceClass>tucano.ws.PessoaWS</serviceClass> </service> </beans>
Básicamente a configuração se resume em um nome para o Serviço e a Classe que implementa-o. Após fazer deploy do projeto no seu container JEE você poderá acessar o serviço da seguinte maneira http://localhost/<CONTEXTO>/services/<SERVICE_NAME>?wsdl, então, http://localhost/Tucano/services/PessoaService?wsdl.
Você pode fazer o download dos fontes aqui.
É prático, fácil e rápido, vale ser estudado e em alguns casos sugerido como solução, mesmo assim eu estou cansado de ver configurações em arquivo XMLs fora do contexto, não sou muito adepto a esta solução, de qualquer maneira tá dado o recado. =)









Ola Luciano,
Estou tentando implementar o XFire como o exemplo acima, mas não estou conseguindo. Tentei fazer o download dos fontes, mas não está mais disponibilizado, você poderia disponibiliza-los?
Tenho um webservice rodando com XFire, mas não está usando annotations, queria aproveitar essa idéia e implementar no meu webservice.
Valeu,
Helder
Helder, vou corrigir o link em breve, envio o link pra você por e-mail.
Obrigado.
O link foi corrigido.