2016-05-15 9 views
0

私はジャージーを使用したWebサービスを持っています。私は休憩サービスからサーブレットで作成されたハッシュマップにアクセスしたいです。 Servlet Sholudのハッシュマップは、アプリケーションの起動時に1回だけ作成されます。 これは、web.xmlJerseyを使用してRest WebサービスからServletにアクセスする方法

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>GrpService_Map</display-name> 
    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.ericsson.mapService</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

サービスクラスTestSErviceは.MYの質問は、私はハッシュマップを作成し、必要なサーブレットを配置する場所をどのように私はTestSErviceからマップすることをアクセスするcom.ericsson.mapServiceパッケージ内にされているのですか? これは

public class TestSerlvet extends HttpServlet{ 
    protected void doGet(HttpServletRequest request, 
       HttpServletResponse response) throws ServletException, IOException 
     { 
Map<String, Map<String,List<String>>> IndexMap = new HashMap<String, Map<String,List<String>>>(); 
     Map<String,List<String>> signumMap = new HashMap<String,List<String>>(); 
     List<String> grp = new ArrayList<String>(); 
     grp.add("1"); 
     grp.add("2"); 
     signumMap.put("eab", grp); 
     signumMap.put("eabc",grp); 
     signumMap.put("exy",grp); 
     IndexMap.put("I", signumMap); 
} 
} 

ありがとう

+0

あなたのサーブレットである「TestService.java」と、サーブレット 'HashMap'にアクセスしようとしていないサービスコードの場所を投稿してください。 –

+1

投稿されたサービスクラスとサーブレット、そしてどこからハッシュマップにアクセスしたいのですか –

答えて

0

は、サーブレットがにload-on-startupセットでweb.xmlで初期化(およびマッピングされた)されなければならない。これは、私のサーブレットクラスである私のサービスクラスTestService.java

@Path("/Service") 
public class TestService { 
    @GET 
    @Consumes("application/xml") 
    @Produces(MediaType.TEXT_PLAIN) 
    @Path("/cacheserviceTestMap") 
    public String createGroupCache(@Context HttpServletRequest request) 
      throws IOException { 

     //here i want to access the IndexMap hashmap 
     return "Success"; 
    } 
} 

ですコンテナの起動時にロードされるためにREST呼び出しが処理される前に、jersey-servletの値よりも小さい値を返します。サーブレットのdoGetメソッドのIndexMapローカル変数は、公にアクセスできるサーブレットの静的フィールドに変換する必要があります。そのフィールドの初期化はサーブレットのinit()メソッドで発生し、HashMapがどのRESTエンドポイントにアクセスする前に初期化されているかを確認する必要があります。

上記が完了したら、TestService.createGroupCache()は、サーブレットの静的ゲッターメソッドを呼び出すことによって、すでに初期化されたHashMapを読み取ることができるはずです。

+0

reply.Butありがとう、web.xmlに必要な変更はありません –

関連する問題