2016-12-08 5 views
2

私はIS7アプリケーションサーバーのコンテキストで実行するサードパーティのサーブレットを含めることを試みています。サーブレットの追加とweb.xmlへのマッピングについてはどうすればよいですか?Intershop 7.4のアプリケーションサーバーコンテキストで実行するサーブレットを追加する

知識ベースでは、Enfinity Suite 6に関する情報しか見つかりませんでした。提供されている手順はどれもうまくいきません。

EDIT:

私はobjectgraph.propertiesファイルに自分のServletModuleを追加したのGuiceを使用して

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); 
    } 
} 

のような特定のサーブレットモジュールを介してサーブレットを結合IS7ための提案された解決策を見つけましたが、私のサーブレットは、私がアクセスしようとするとまだ呼び出されていません。

提案がありますか?

答えて

2

私はこれがICM 7.7で動作することを知っていますが、それは7.4以降であったと思います。

Guice Servlet Extensionを使用できます。

1.カートリッジ内のGuiceサーブレットへの依存性を確認してください。build.gradle

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

2.Defineカートリッジobjectgraph.propertiesでサーブレットモジュール。

global.modules = com.example.modules.DemoServletModule 

3.Implementサーブレット。

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

4.Createモジュール実装。 Gotcha:コメントは、/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、再起動、してみてください。

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

Reposnse:

Hello, world! 

UPDATE:

あなたのサーブレットは、あなたがそれを許可する必要がwebadapterを通して見えることを希望の場合。このセクションに

1.Open IS_SHARE\system\config\cluster\webadapter.properties

2.Navigate:あなたのサーブレットの

## 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.Addエントリ。

servlet.allow.4=/DEMO 

4.Access類似したURLでサーブレット:

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

こんにちはLachezar!ご協力いただきありがとうございます。私は正しい方向に私を入れています。私は 'servletengine'と 'guice-servlet'の依存関係を宣言する必要はありませんでした。それはなくても働いた。 私の間違いは、サーブレットモジュールのアクセスパスを "/ DEMO/*"だけで宣言していました。 "/ servlet"をサーブレットパスの前に置いてください。 –

+0

アップデートもご覧ください。 –

+0

ありがとう!これは本当に私の頭の中でやっていた。 –

関連する問題