嵌入 Jetty 并在 ServletContext 上设置默认属性
Embed Jetty and set default attributes on the ServletContext
我想将 Jetty 嵌入到我正在编写的服务器应用程序中。嵌入式 Jetty 引擎将用于托管将直接与服务器应用程序内部集成的各种 Web 应用程序。我想将 Web 应用程序打包到单独的 WAR 文件中并编写它们,以便它们独立于服务器。仅共享他们与服务器共同使用的代码。
如何使用来自服务器的对象配置每个 ServletContext 而 Web 应用程序不需要知道如何从 Jetty 嵌入的进程中获取它们?
服务器进程生命周期示例大纲:
- 启动并加载配置
- 设置在整个过程中存在的内部对象
- 创建网络应用程序可用于访问内部状态的句柄
- 启动嵌入式 Jetty 引擎
- 公开网络应用程序通过某种形式的配置请求的句柄。 (我该怎么做??)
- 处理传入连接
- 等待termination/shutdown信号
- 清理资源
- 退出
想法是在 Jetty 中部署 Web 应用程序。当 Web 应用程序初始化时,服务器将读取 Web 应用程序的一些配置,然后公开访问他们感兴趣的数据所需的句柄。
问题是服务器不是 J2EE 应用程序,所以 EJB 不可用。
我想通了,事实证明你可以直接在 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 ();
}
}
我想将 Jetty 嵌入到我正在编写的服务器应用程序中。嵌入式 Jetty 引擎将用于托管将直接与服务器应用程序内部集成的各种 Web 应用程序。我想将 Web 应用程序打包到单独的 WAR 文件中并编写它们,以便它们独立于服务器。仅共享他们与服务器共同使用的代码。
如何使用来自服务器的对象配置每个 ServletContext 而 Web 应用程序不需要知道如何从 Jetty 嵌入的进程中获取它们?
服务器进程生命周期示例大纲:
- 启动并加载配置
- 设置在整个过程中存在的内部对象
- 创建网络应用程序可用于访问内部状态的句柄
- 启动嵌入式 Jetty 引擎
- 公开网络应用程序通过某种形式的配置请求的句柄。 (我该怎么做??)
- 处理传入连接
- 等待termination/shutdown信号
- 清理资源
- 退出
想法是在 Jetty 中部署 Web 应用程序。当 Web 应用程序初始化时,服务器将读取 Web 应用程序的一些配置,然后公开访问他们感兴趣的数据所需的句柄。
问题是服务器不是 J2EE 应用程序,所以 EJB 不可用。
我想通了,事实证明你可以直接在 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 ();
}
}