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

2024-03-25

我正在尝试包含一个第三方 servlet 以在我们的 IS7 应用程序服务器的上下文中运行。我将如何添加 servlet 并映射到 web.xml?

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

EDIT:

我找到了一个建议的 IS7 解决方案,使用 Guice 并通过特定的 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。

有什么建议么?


我知道这在 ICM 7.7 中有效,但我相信它从 7.4 起就已经存在了。

您可以使用Guice Servlet 扩展 https://github.com/google/guice/wiki/Servlets.

1.声明对墨盒中 Guice Servlet 的依赖关系build.gradle. Example:

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

2.在cartridge中定义servlet模块objectgraph.properties. Example:

global.modules = com.example.modules.DemoServletModule

3.实现您的servlet。Example:

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

4.创建模块实现。Gotcha:名称应该以/servlet/正如评论中指出的。Example:

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.构建、重启、尝试。Example:

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

回复:

Hello, world!

UPDATE:

如果您希望您的 servlet 通过网络适配器可见,您必须允许它。

1.Open 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 添加条目。Example:

servlet.allow.4=/DEMO

4.通过类似的 URL 访问 servlet:

https://example.com/INTERSHOP/servlet/WFS/DEMO/hey
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 使用客户端指纹对 JWT 令牌进行编码?

    我想知道是否会是最佳实践使用客户端指纹作为 JWT 秘密进行编码 然而 我在 WWW 上找不到有关这个问题的任何内容 但到目前为止 我这样做是有意义的 我正在考虑使用 JavaScript 生成指纹客户端 并在每次调用时将其发送到 API
  • 如何添加tailwindcss到vite?

    我在用着vite https github com vuejs vite 0 16 6并想将 vuepress 站点迁移到使用 vite 但是我不确定如何配置 vite 以使用 tailwindcss in my index css tai
  • 如何让3个textView控件大小相同

    在我的活动中我定义了 3 个 textView 控件 所有这些 textView 都一个挨着一个出现 我需要做一些事情 使它们始终具有相同的大小 假设第一个 textView 控件是小时 第二个 textView 控件是分钟 第三个 tex
  • 多个 Asp.Net 项目之间的共享代码 [重复]

    这个问题在这里已经有答案了 在同一服务器上的多个 Web 应用程序之间共享 bin 文件夹和 dll 以及其他资源文件 如 css 的最佳实践是什么 我已经将通用代码分离到它们自己的程序集中 但我想知道部署等 我基本上希望将所有通用文件位于
  • Meteor 需要时间才能知道是否存在 {{currentUser}}

    我有一些代码 我只想在存在时运行noUser和一些当有currentUser 所有这些都在导航模板内 就像这样 if currentUser li class nav a href Post a li li class nav a Ola
  • 如何在 Chrome 扩展程序中录制音频?

    设置 Chrome 扩展程序以从麦克风录制音频的最简单方法是什么 我看到有一个工作实验性语音输入API http code google com chrome extensions trunk experimental speechInpu
  • 将参数传递给函数以使用 ggplot stat_function 进行绘图

    我有一个函数和一个参数列表 F lt function a b a b b a L lt list a 5 b 2 c 0 我想用未知的 x 或 x 替换参数之一 a b 或 c 并使用 ggplot 的 stat function 进行绘
  • Unity 与 ASP.NET Core 和 MVC6(核心)

    更新 09 08 2018Unity正在开发中here https github com unitycontainer container但我还没有时间测试它如何与 ASP NET Core 框架配合使用 更新 15 03 2018此解决方
  • BindingList.Sort() 的行为类似于 List.Sort()

    我正在尝试编写一个可用于我的应用程序的 SortableBindingList 我发现了很多关于如何实现基本排序支持的讨论 以便 BindingList 在 DataGridView 或其他一些绑定控件的上下文中使用时进行排序 包括来自 S
  • 结束动画事件android

    我在视图中有一个淡出动画 位于片段内 每次动画发生时 视图完成后都会再次重新绘制自身 我找到了一个解决办法view SetVisibility View GONE 但它不会等待动画完成 我想仅在动画完成后执行此 setVisibility
  • 如何在 SPA 中实施 Docusign,而不要求最终用户使用 DocuSign 进行身份验证

    我正在关注此处显示的 React OAuth 隐式示例 https github com docusign eg 02 react implicit grant https github com docusign eg 02 react i
  • WPF MergedDictionaries - 值不能为空 - 参数名称:item

    我的 App Resources MergedDictionary 遇到了一个棘手的问题 每次添加带有来自另一个程序集的源和 XML 命名空间的新字典时 都会产生错误 并且我无法构建我的程序 该错误出现在 App xaml 中 并带有下划线
  • BigQuery 完全外连接生成“左连接”结果

    我有 2 个表 它们都包含不同的 id 值 有些 id 值可能出现在两个表中 有些对于每个表来说是唯一的 表 1 有 10 910 行 表 2 有 11 304 行 运行左连接查询时 SELECT COUNT DISTINCT a id F
  • 多语言集成测试框架

    想象一下 您有一个由不同组件组成的相当复杂的面向服务的体系结构 组件是用不同的语言 Java PHP Ruby 编写的 并以不同的方式相互通信 即 UI REST API 在某些情况下共享一些数据库表等 我正在尝试为一些端到端测试设计一个集
  • AGDA 中极浅嵌入 VHDL 的指南

    对于我的编程语言项目 我正在 agda 中做一个非常浅且简单的 VHDL 数字电路嵌入 目的是写出语法 静态语义 动态语义 然后写一些证明来展示我们对材料的理解 到目前为止我已经编写了以下代码 data Ckt Set where var
  • 为什么我无法访问 Google Compute Engine 虚拟机?

    我无法访问 Google 计算引擎 GCE 虚拟机 GCE INSTANCE NAME 与 Google Cloud SDK gcloud gcloud compute project GCP PROJECT ID ssh zone GCE
  • 使用 JavaScript 将图像从 A 移动到 B

    这是我第一次来这里 我不知道如何缩进这个抱歉 我有一张货车的图像 我试图将其移动到屏幕上 就像它正在行驶一样 完成后 我将缩放图像 使其看起来好像它正在移动 并且变小 我需要在标准 javascript 中完成此操作 无需任何包 例如 JQ
  • 将 np.float64 和 np.array 值存储为数据帧中的列值

    我有两个 numpy 数组和数据框 如下所示 val np array 0 501 0 32 values np arange 24 reshape 2 3 4 input df pd DataFrame columns colname s
  • 如何全局禁用grails中的deepvalidate?

    我们如何在 grails3 的全局级别上禁用深度验证 就像在我们保存一个域对象的情况下一样 它试图保存所有内部域对象 从而导致不同的错误 例如唯一约束等 我们正在使用 mongodb Grails 版本 3 3 2 Gorm 版本 6 1
  • 添加 servlet 以在 Intershop 7.4 应用程序服务器上下文中运行

    我正在尝试包含一个第三方 servlet 以在我们的 IS7 应用程序服务器的上下文中运行 我将如何添加 servlet 并映射到 web xml 在知识库中 我只找到了有关 Enfinity Suite 6 的信息 所提供的步骤似乎都不起