Vraptor3 + Jax-WS

4 respostas
M

Boa Tarde,

Estou com dificuldade em configurar o web.xml com diretivas do vraptor + jax-ws.

Passo 1- Criei um projeto separado para publicar um webservice utilizando jax-ws com as anotations @WebService e @WebMethod + Tomcat.
Testei a URL e o serviço foi publicado e gerou os WSDL.

Passo 2- Baixei o projeto Vraptor3-Blank, publiquei ele no tomcat e funcionou normalmente.

Passo 3- Criei as Classes de WebService com as anotations no projeto Vraptor3 e Adicionei a entrada :

<servlet>
	   <servlet-name>HelloWS</servlet-name>
	   <servlet-class>
	     com.sun.xml.ws.transport.http.servlet.WSServlet
	   </servlet-class>
	</servlet>
	
	<servlet-mapping>
	  <servlet-name>HelloWS</servlet-name>
	  <url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
	<listener>
	  <listener-class>
	     com.sun.xml.ws.transport.http.servlet.WSServletContextListener
	  </listener-class>
	</listener>
O arquivo final ficou assim:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">

	<servlet>
	   <servlet-name>HelloWS</servlet-name>
	   <servlet-class>
	     com.sun.xml.ws.transport.http.servlet.WSServlet
	   </servlet-class>
	</servlet>
	
	<servlet-mapping>
	  <servlet-name>HelloWS</servlet-name>
	  <url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
	<listener>
	  <listener-class>
	     com.sun.xml.ws.transport.http.servlet.WSServletContextListener
	  </listener-class>
	</listener>

	<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	
</web-app>

O problem é que ele falha no deploy acusando erro no web.xml

4 Respostas

Lucas_Cavalcanti

qual erro no web.xml?

G

Lucas, meu comentário não vai ajudar em nada nesse tópico, mas já deixe-me aproveitar para sanar uma dúvida minha.

Já que o Vraptor processa todas as requisições, isso não entrará em conflito com o JAXWS? Ou o defering irá devolver a requisição de volta para o servlet do JAXWS?

Lucas_Cavalcanti

possivelmente entre em conflito sim… mas não é certeza, pq se o vraptor não encontra nenhuma lógica que trata a URI da requisição, ele delega pro container, que vai chamar a próxima servlet por exemplo…

M

Vraptor3 trabalha normalmente com Jax-WS.

O erro no meu caso foi o mencionado abaixo:

SEVERE: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener

Obs: Só achei estranho porque sem o Vraptor esse erro não aparecia, mas esse problema ja foi resolvido e o Jax-WS esta trabalhando junto com o Vraptor3.

Abaixo segue o web.xml que estou utilizando:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ProjectVraptor3</display-name>
 
	<servlet>
	   <servlet-name>HelloWS</servlet-name>
	   <servlet-class>
	     com.sun.xml.ws.transport.http.servlet.WSServlet
	   </servlet-class>
	</servlet>
	
	<servlet-mapping>
	  <servlet-name>HelloWS</servlet-name>
	  <url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
	<listener>
	  <listener-class>
	     com.sun.xml.ws.transport.http.servlet.WSServletContextListener
	  </listener-class>
	</listener>
 
  <filter>
    <filter-name>vraptor</filter-name>
    <filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>vraptor</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>

</web-app>
Criado 16 de abril de 2010
Ultima resposta 18 de abr. de 2010
Respostas 4
Participantes 3