嵌入Jetty并在ServletContext上设置默认属性

时间:2015-02-22 22:24:39

标签: java jsp servlets jetty

我想将Jetty嵌入到我正在编写的服务器应用程序中。 Embbeded Jetty引擎将用于托管各种Web应用程序,这些应用程序将直接与服务器应用程序内部集成。我想将Web应用程序打包到单独的WAR文件中并编写它们,使它们独立于服务器。仅共享他们与服务器共同使用的代码。

如何在没有Web App需要知道如何从进程中获取它们的情况下,使用来自服务器的对象配置每个ServletContext?

服务器进程生命周期示例概述:

  1. 启动并加载配置
  2. 设置整个过程中的内部对象
  3. 创建网络应用可用于访问内部状态的句柄
  4. 启动嵌入式Jetty引擎
  5. 通过某种形式的配置公开Web应用程序请求的句柄。 (我该怎么做?
  6. 处理传入连接
  7. 等待终止/关闭单
  8. 清理资源
  9. 退出
  10. 我们的想法是在Jetty中部署Web应用程序。初始化Web应用程序时,服务器将读取Web应用程序的一些配置,然后公开句柄需要访问他们感兴趣的数据。

    问题是服务器不是J2EE应用程序,所以EJB已经出局了。

1 个答案:

答案 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 ();
  }
}