1

最初に jersey リソースを定義し、クラス GetAllProgramDesc を定義してから、それに Java Bean "IDataDevProgram" を注入します。

   @Path("/datadev")
   public class GetAllProgramDesc {


private IDataDevProgram dataProgram;

public IDataDevProgram getDataProgram() {
    return dataProgram;
}

public void setDataProgram(IDataDevProgram dataProgram) {
    this.dataProgram = dataProgram;
}


// The Java method will produce content identified by the MIME Media
// type "text/plain"
@GET @Path("/mbpprograms") 
@Produces("application/json")
public String getClichedMessage() {
    // Return some cliched textual content
    List<MbpProgram> list=dataProgram.showMbpProgramList(21294551);
    return JSONObject.toJSONString(list);
}   

}

次に、Java Bean を jersey リソース クラスに注入します。

<bean id="dataDevProgram" class="com.taobao.gemstone.data.mbpapi.datadev.DataDevProgram">
    <property name="mDBops" ref="dataDevDBOps" />
    <property name="sqlManager" ref="sqlManger" />
    <property name="actionManager" ref="actionManger" />
    <property name="dataManager" ref="dataManageImpl" />
    <property name="constant" ref="constantproperty"/>
</bean>

<bean id="datadevrest"    class="com.taobao.gemstone.data.mbpapi.restresources.GetAllProgramDesc">
    <property name="dataProgram" ref="dataDevProgram" />
</bean>

ただし、この URL にクエリを送信すると、プロセス全体が次のようにクラッシュしました。

java.lang.NullPointerException com.taobao.gemstone.data.mbpapi.restresources.GetAllProgramDesc.getCichedMessage(GetAllProgramDesc.java:48) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:601)

この問題に対処する方法はありますか?

4

1 に答える 1

2

Jersey で Spring を使用する場合は、次のいずれかを使用できます。

@Context ServletContext context;リソースクラスに注入し、

次に、次のようなコードを使用します。

WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(context); IDataDevProgram dataProgram = applicationContext.getBean(IDataDevProgram .class);

または、IoC コンテナーの jersey サポートを使用することもできます。

@InjectParam IDataDevProgram dataProgram

jersey-springcontribを使用して適用する必要があります。その方法を説明する短いチュートリアルが多数ありSpringServletます。web.xml

于 2013-04-13T09:17:38.710 に答える