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

标签 java jsp servlets jetty

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

如何使用服务器中的对象配置每个 ServletContext,而 Web 应用程序不需要知道如何从 Jetty 嵌入的进程中获取它们?

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

  1. 启动并加载配置
  2. 设置在整个流程中存在的内部对象
  3. 创建网络应用可用来访问内部状态的句柄
  4. 启动嵌入式 Jetty 引擎
  5. 通过某种形式的配置公开网络应用程序请求的句柄。 (我该怎么做?)
  6. 处理传入连接
  7. 等待终止/关闭信号
  8. 清理资源
  9. 退出

这个想法是在 Jetty 中部署 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 ();
  }
}

关于java - 嵌入 Jetty 并在 ServletContext 上设置默认属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28664030/

相关文章:

java - 无法在 JSP 内迭代列表

java - InputStream.read(byte[], 0 length) 提前停止?

java - 难以设置 apache tomcat

Java:从 JAR 文件中的类文件中获取方法 stub 的简单方法?反射?

javascript - 使用 Azure 中的 Angular 应用程序和 Rest 服务进行 CORS 验证

java - 程序在调用 REST 服务时挂起

java - 在jsp指令中

java - JSP 文件在分析失败时与用户数据一起调用

java - 在响应文件下载时重新启用表单提交按钮

java - 使用 MVC 和 DAO 模式在 JSP 页面的 HTML 中显示 JDBC ResultSet