cxf-rt-frontend-jaxrs
2.7.7を使用して、いくつかの残りのサービスをすでに実行しています
/myservice/customers
/myservice/items
私の休息サービスは 2 つのエンドポイントを提供します。
@Component
public class CustomerService {
@GET
@Path("customers")
@Produces({MediaType.APPLICATION_JSON})
public ... getCustomers() { ... }
@GET
@Path("items")
@Produces({MediaType.APPLICATION_JSON})
public ... getItems() { ... }
}
これはうまく機能し、いくつかの jsp ページを追加したいと思います。
Redirecting requests and serve static contentについて読んだことがありますが、それを機能させることができず、 と の構成について混乱していweb.xml
ますapplicationContext.xml
。
これが私がこれまでに持っているものです:
web.xml
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
applicationContext.xml
<jaxrs:server id="rest" address="/">
<jaxrs:serviceBeans>
<ref bean="customerWebService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
<ref bean="dispatchProvider"/>
</jaxrs:providers>
</jaxrs:server>
<bean id="dispatchProvider" class="org.apache.cxf.jaxrs.provider.RequestDispatcherProvider">
<property name="dispatcherName" value="jsp"/>
<property name="resourcePath" value="/admin/item.jsp"/>
<property name="beanNames">
<map>
<entry key="com.company.domain.Item" value="item"/>
</map>
</property>
</bean>
jspページ
という名前の jsp Web ページitem.jsp
を webapp/WEB-INF に配置しました。
<%@ page import="com.company.domain.Item" %>
<%
Item item = (Item) request.getAttribute("item");
%>
<html>
<head></head>
<body>
Item: <%= item.getEnglishName() %>.
</body>
</html>
エラー
開く/customerservice/items
と、残りのサービスから有効な JSON 応答を受け取ります。
ただし、開く/customerservice/admin/item.jsp
と次のようになります。
[10:34:45.791] [qtp104543434-33] 警告 JAXRSUtils - 要求パス "/customerservice/admin/item.jsp" に一致する操作が見つかりません。相対パス: /admin/item.jsp、HTTP メソッド: GET、ContentType: / , 受け入れる: text/html,application/xhtml+xml,application/xml;q=0.9, /;q=0.8,. 詳細については、FINE/TRACE ログ レベルを有効にしてください。[10:34:45.796] [qtp104543434-33] エラー DefaultExceptionMapper - DefaultExceptionMapper が応答を返しました: 内部サーバー エラー javax.ws.rs.ClientErrorException: null at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java: 503) ~[cxf-rt-frontend-jaxrs-2.7.7.jar:2.7.7] org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:227) で ~[cxf-rt-frontend -jaxrs-2.7.7.jar:2.7.7] at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:103) ~[cxf-rt-frontend-jaxrs-2.7.7.jar: 2.7.7] org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) で [cxf-api-2.7.7.jar:2.7.7] org.apache.cxf.transport.ChainInitiationObserver で。
私は何を間違っていますか?
web.xml に別個のサーブレットと URL マッピングが必要ですか?
リクエスト ディスパッチャにはさらに設定が必要ですか (dispatcherName
プロパティなど)?
ご指導いただきありがとうございます。