[Resolvido] JSF + Jersey é possível?

Olá pessoal!

Estou montando um aplicativo JSF e preciso utilizar webservice para alguns métodos, estou tentando elaborar algo com o Jersey, inclusive até consegui, mas ao tentar utiliza-lo acontece um problema meio estranho.

Se eu faço o Jersey funcionar minhas páginas jsf param de abrir, se tiro o mapeamento do jersey do web.xml as páginas voltam a funcionar, mas o Jersey deixa de funcionar.
Alguém saberia me dizer o por quê???

web.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

menuDroidWeb

State saving method: ‘client’ or ‘server’ (=default). See JSF Specification 2.5.2
javax.faces.STATE_SAVING_METHOD
client


javax.servlet.jsp.jstl.fmt.localizationContext
resources.application


com.sun.faces.config.ConfigureListener


Faces Servlet
javax.faces.webapp.FacesServlet
1


Faces Servlet
*.jsf

<servlet>
	<servlet-name>Jersey REST Service</servlet-name>
	<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
	<init-param>
		<param-name>com.sun.jersey.config.property.packages</param-name>
		<param-value>br.com.unip.menudroidweb.facade</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>Jersey REST Service</servlet-name>
	<url-pattern>/*</url-pattern>
</servlet-mapping>


<welcome-file-list>
	<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
	<param-name>primefaces.THEME</param-name>
	<param-value>blitzer</param-value>
</context-param>
[/code]

Agradeço desde já pela ajuda!!!
:smiley:

Rapaz acredita que to passando pelo mesmo problema que vc!!

Pra não perder tempo fiz uma aplicação web separada pra tratar as requisições REST.

Vc já tentou passar um &lt;url-pattern&gt; específico pro webservice?

Como vc está especificando /* e o JSF usa /*.jsf acredito que dê conflito.

Luiz,nao sei quanto ao colega,mas eu passava um <url-pattern>consulta/* e tbm tive o mesmo erro.

Pessoal, o mapeamento de servlets no web.xml também já me causou muitos problemas.
Especificamente no caso do Jersey, após alguma pesquisa, consegui resolver da seguinte forma (sem o asterisco):

&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;jersey&lt;/servlet-name&gt;
	&lt;url-pattern&gt;/&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

Nota: no meu caso eu queria o Jersey na raiz e não num path dentro da aplicação.

Depois desse mapeamento, adicionei os mapeamentos estáticas mais específicos por extensão, os quais tem prioridade sobre o do Jersey:

&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.html&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.jpg&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.png&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.gif&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.css&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.js&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.woff&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;default&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.eot&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

Isso direciona essas extensões de arquivos estáticos para o default servlet (estava usando tomcat nesse projeto) que servirá os arquivos normalmente.
O mesmo deve funcionar para o JSF.

Oooo amigos!
Excelentes respostas!!!
Vou testar essa última do utluiz assim que chegar em casa. Se der tudo certo volto aqui para avisar a todos. Assim fica documentado.

Muito obrigado pela ajuda pessoal!!!
:smiley:

Olá amigos!
Estou voltando aqui para dar uma resposta.

Testei da forma como o utluiz disse, mas não obtive resultados. Então resolvi testar a forma que o luiz_renato falou e funcionou normalmente.
Deixei meu web.xml da seguinte forma

web.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

menuDroidWeb

State saving method: ‘client’ or ‘server’ (=default). See JSF Specification 2.5.2
javax.faces.STATE_SAVING_METHOD
client


javax.servlet.jsp.jstl.fmt.localizationContext
resources.application


com.sun.faces.config.ConfigureListener


Faces Servlet
javax.faces.webapp.FacesServlet
1


Faces Servlet
*.jsf

<servlet>
	<servlet-name>Jersey REST Service</servlet-name>
	<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
	<init-param>
		<param-name>com.sun.jersey.config.property.packages</param-name>
		<param-value>br.com.unip.menudroidweb.facade</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>Jersey REST Service</servlet-name>
	<url-pattern>/ws/*</url-pattern>
</servlet-mapping>


<welcome-file-list>
	<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
	<param-name>primefaces.THEME</param-name>
	<param-value>blitzer</param-value>
</context-param>
[/code]

Olá, estou com problema para fazer o Rest funcionar com o JSF 2.
Meu caso é um pouco mais complicado … preciso servir o Rest na raiz da aplicação e o JSF em um path específico, ficando assim:

rest:
www.localhost:8080/minhaapp/a/*
www.localhost:8080/minhaapp/b/*
www.localhost:8080/minhaapp/c/*

e jsf:
www.localhost:8080/minhaapp/areajsf/*

tentei colocar no web.xml os seguintes url-pattern:

para rest:
/*

e para jsf:
/areajsf/*

mas não funciona o jsf.

Alguém saberia como fazer funcionar desse modo? Não gostaria de colocar um pattern tipo “/rest/*” pois iria contra os principios de uma URL significativa …
Gostaria que ficasse assim: www.minhaapp/usuario/123
e não assim: www.minhaapp/rest/usuario/123

att,

[quote=vtkamiji]Olá, estou com problema para fazer o Rest funcionar com o JSF 2.
Meu caso é um pouco mais complicado … preciso servir o Rest na raiz da aplicação e o JSF em um path específico, ficando assim:

rest:
www.localhost:8080/minhaapp/a/*
www.localhost:8080/minhaapp/b/*
www.localhost:8080/minhaapp/c/*

e jsf:
www.localhost:8080/minhaapp/areajsf/*

tentei colocar no web.xml os seguintes url-pattern:

para rest:
/*

e para jsf:
/areajsf/*

mas não funciona o jsf.

Alguém saberia como fazer funcionar desse modo? Não gostaria de colocar um pattern tipo “/rest/*” pois iria contra os principios de uma URL significativa …
Gostaria que ficasse assim: www.minhaapp/usuario/123
e não assim: www.minhaapp/rest/usuario/123

att,
[/quote]E sem usar algum framework específico como PrettyFaces, isso deveria funcionar?

nunca usei prettyfaces … com isso funcionaria?

o problema é comentado acima, e a solução foi usar uma path específica para o Rest, porém
eu não gostaria de especificar essa path, e sim o root da aplicação.

att