Gostaria de alguma ajuda para o jetty embedded conseguir ler meus managed beans do jsf 2.1, pelo que vejo ele não consegue ver as classes que eu gerei.
Classloading jsf2 no jetty embedded
5 Respostas
Olá rapiner,
Acho que posso te ajudar, como você está subindo o jetty?
assim, eu criei um projeto java separado e outro projeto web .
Eu queria usar o jetty embedded nele separado pois eu keria desenvolver com o jetty e depois disponibilizar no jboss.
Meu projeto não é do tipo do maven, usei o template do eclipse mesmo e fui inserindo os jars.
Pelo que eu pesquisei o jetty tem um problema para ler os jars ou as classes de um projeto jsf2 quando está embedded, pois o jsf2 procura os .class do projeto no meta-inf. Pelo que vi ele não consegue ler meus managed beans. Estou usando annotations @ManagedBean e @SessionScoped. Estou usando o jetty 7.6.1
Segue abaixo o código pra inicializar o servidor embedded do projeto jettyServer
public class Start {
public static void main(String[] args) {
Server server = new Server();
String[] configFiles = {"etc/jetty.xml"};
try {
for(String configFile : configFiles){
XmlConfiguration configuration = new XmlConfiguration(new File(configFile).toURI().toURL());
configuration.configure(server);
}
WebAppContext appContext = new WebAppContext();
appContext.setContextPath("/jsf2Jetty");
File rd = new File("./");
File warPath = new File(rd,"../jsf2Jetty/WebContent");
appContext.getResourcePaths("/WEB-INF/classes/");
appContext.setWar(warPath.getAbsolutePath());
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{ appContext, new DefaultHandler()});
server.setHandler(handlers);
server.start();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
aqui o web.xml do projeto web jsf2Jetty
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>dot-luv</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Ainda não consegui resolver o problema, provavelmente o jetty embedded não consiga ler as classes da aplicação ou é bug, minha aplicação ainda nao consegue enxergar o manageds beans sempre dando o erro de property null dos manageds.
O que realmente eu queria fazer era desenvolver em jsf2 uma aplicação e empacotar em um jar como executavel para rodar como uma aplicação “desktop” simples. Provavelmente vou ter de usar swing msm.
Ainda não consegui resolver o problema, provavelmente o jetty embedded não consiga ler as classes da aplicação ou é bug, minha aplicação ainda nao consegue enxergar o manageds beans sempre dando o erro de property null dos manageds.O que realmente eu queria fazer era desenvolver em jsf2 uma aplicação e empacotar em um jar como executavel para rodar como uma aplicação “desktop” simples. Provavelmente vou ter de usar swing msm.
Amigo passei pelos mesmos problemas , mas resolvi segue o meu post lá vc ira encontra solução para estes problemas : http://www.guj.com.br/12271-jetty-embedded-com-cdi
Pow, já tinha até desistido da solução hehehe. Na época fiz com swing mesmo e jnlp mas como todo conhecimento é bom e vou tirar o meu projeto antigo do baú e testar essa solução se conseguir fazer funcionar te aviso aew.
Muito obrigado por se dispor a solucionar este problema.