添加servlet以在Intershop 7.4应用程序服务器上下文中运行

时间:2016-12-08 08:42:18

标签: servlets guice intershop

我试图在我们的IS7应用服务器的上下文中包含第三方servlet。我该如何添加servlet并映射到web.xml?

在知识库中,我只找到了有关Enfinity Suite 6的信息。所提供的步骤似乎都无效。

编辑:

我找到了一个使用Guice的IS7解决方案,并通过特定的Servlet模块绑定了servlet,如

package com.intershop.test;

import com.google.inject.servlet.ServletModule;

public class MyServletModule extends ServletModule
{
    @Override
    protected void configureServlets()
    {
        bind(MyServlet.class).in(Singleton.class);
        serve("/my/*").with(MyServlet.class);
    }
}

我已将ServletModule添加到objectgraph.properties文件中,但在尝试访问时仍未调用我的servlet。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我知道这可以在ICM 7.7中使用,但我相信它自7.4以来一直存在。

您可以使用Guice Servlet Extension

1.Declare依赖于你的盒式磁带build.gradle中的Guice Servlet。 实施例

dependencies 
{
    ...
    compile group: 'com.intershop.platform', name: 'servletengine'
    compile 'com.google.inject.extensions:guice-servlet'
    ...
}

2.定义盒式磁带objectgraph.properties中的servlet模块。 实施例

global.modules = com.example.modules.DemoServletModule

3.实现您的servlet。 实施例

public class DemoServlet extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        resp.getWriter().append("Hello, world!");
    }
}

4.创建模块实现。 得知:该名称应以评论中指出的/servlet/开头。 实施例

import javax.inject.Singleton;
import com.google.inject.servlet.ServletModule;

public class DemoServletModule extends ServletModule
{
    @Override
    protected void configureServlets()
    {
        bind(DemoServlet.class).in(Singleton.class);

        serve("/servlet/DEMO/*").with(DemoServlet.class);
    }
}

4.Build,restart,try。 实施例

GET /servlet/DEMO/hey HTTP/1.1
Host: example.com:10054
....

Reposnse:

Hello, world!

<强>更新

如果您希望通过webadapter看到您的servlet,则必须允许它。

1.打开IS_SHARE\system\config\cluster\webadapter.properties

2.导入本节:

## The list of servlets, which can be accessed through the generic
## .servlet mapping. The WebAdapter forwards only requests of the form
## /servlet/<group><servlet.allow.x>...

3.为您的servlet添加条目。 实施例

servlet.allow.4=/DEMO

4.在类似的URL上访问servlet:

https://example.com/INTERSHOP/servlet/WFS/DEMO/hey