我想将Jetty嵌入到我正在编写的服务器应用程序中。 Embbeded Jetty引擎将用于托管各种Web应用程序,这些应用程序将直接与服务器应用程序内部集成。我想将Web应用程序打包到单独的WAR文件中并编写它们,使它们独立于服务器。仅共享他们与服务器共同使用的代码。
如何在没有Web App需要知道如何从进程中获取它们的情况下,使用来自服务器的对象配置每个ServletContext?
服务器进程生命周期示例概述:
我们的想法是在Jetty中部署Web应用程序。初始化Web应用程序时,服务器将读取Web应用程序的一些配置,然后公开句柄需要访问他们感兴趣的数据。
问题是服务器不是J2EE应用程序,所以EJB已经出局了。
答案 0 :(得分:1)
我想出来了,事实证明你可以在WebAppContext
上设置属性。在Servlet
的后面,您可以使用SpecialResource sr = ( SpecialResource ) getServletContext ().getAttribute ( "com.example.SpecialResource" );
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public final class ExampleDriver
{
public static void main ( String args[] ) throws Exception
{
SpecialResource specialResource = new SpecialResource ();
Server server = new Server ( 19080 );
WebAppContext waCtx = new WebAppContext ();
waCtx.setAttribute ( "com.example.SpecialResource", SpecialResource );
waCtx.setWar ( "path/to/war/file.war" );
server.setHandler ( waCtx );
server.start ();
server.join ();
}
}