Como sou péssimo em games, eu substituo esse tempo com algumas brincadeiras como essas daqui: Meu amigo Bruno Gregory de Brasília, tinha que carregar uma WAR dentro de uma classe Java! Como assim? É isso mesmo, via uma classe Java usando o Jetty você pode rodar um Web Container com todas as funcionalidades pertinentes ao mesmo.
O diferencial dessa aplicação é que sua(s) classe(s) devem ser o WebContainer, então questões de Classloaders por exemplo, devem ser tratadas pelas suas classes.
Além da classes do Jetty, você deve lembrar de por no classpath os jasperC (Compilador de JSPs), no caso de sua aplicação trabalhar com JSPs.
Veja a classe que executa um webcontainer diferetemente de digitar “catalina start” do TomCat
[java]
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppClassLoader;
import org.mortbay.jetty.webapp.WebAppContext;
public class ContainerExecutor
{
public static void main(String[] args)
throws Exception
{
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});
WebAppContext webappcontext = new WebAppContext();
webappcontext.setContextPath(”/demo”);
webappcontext.setWar(”demo.war”);
WebAppClassLoader loader = new WebAppClassLoader(Thread.currentThread().getContextClassLoader(),webappcontext);
webappcontext.setClassLoader(loader);
HandlerCollection handlers= new HandlerCollection();
handlers.setHandlers(new Handler[]{webappcontext, new DefaultHandler()});
server.setHandler(handlers);
server.start();
server.join();
}
}
[/java]
May 30th, 2007 at 3:56 am
Tem também o winstone, http://winstone.sourceforge.net/
Acho ele deveras prático
January 29th, 2008 at 2:11 pm
Edgar, Estou com um pequeno problema com o jetty embedded e queria saber se vc poderia tirar a minha dúvida.
eu tenho que carregar um arquivo .war assim como o exemplo que foi colocado acima, o problema é que eu estou usando o JSF 1.2 e alguns outros frameworks queria saber se tem que ter algum arquivo de configuração para a o jetty poder reconhecer essas bibliotecas.
desde ja muito grato
January 29th, 2008 at 10:51 pm
Olá Leonardo, infelizmente nunca fiz isso. Nao me parece ser muito complicado. Na lista do jetty deve ter algo sobre isso.
[]s
Edgar
July 16th, 2009 at 7:41 pm
Oi Edgar estou eu implementei este codigo e estou recebendo um NoInitialContextException
O que pode ser??
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.mortbay.jetty.plus.webapp.EnvConfiguration.createEnvContext(EnvConfiguration.java:51)
at org.mortbay.jetty.plus.webapp.EnvConfiguration.configureWebApp(EnvConfiguration.java:103)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:510)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:449)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:222)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at br.com.produtec.maxbabel.MaxbabelServer.start(MaxbabelServer.java:46)
at br.com.produtec.maxbabel.MaxbabelServer.main(MaxbabelServer.java:53)
July 17th, 2009 at 1:05 am
Nao faco ideia @Rodrigo,
Mas no Jetty há vários exemplos que voce pode testar também
[]s
Edgar