私は Fabric8-1.2.0.Beta4 を使用し、REST サンプル アプリケーション ( http://tomee.apache.org/examples-trunk/rest-example/README.htmlから取得) を Fabric8 の Tomee にデプロイしようとしている初心者です。openejb-cxf-rs と tomee-jaxrs をインクルードしても効果がないようです。
変更のみ: 1) web.xml http://tomee-openejb.979440.n4.nabble.com/Problem-deploying-REST-Examples-on-Eclipse-td4582815.htmlで提案されているように、以下を追加しました。
<servlet>
<servlet-name>ApplicationConfig</servlet-name>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>ApplicationConfig</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ApplicationConfig</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
2) fabric8:deploy を使用して war ファイルをデプロイし、rest-example プロファイルを作成するために、fabric8-maven-plugin および distributionManagement を pom.xml に追加しました。
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<version>1.2.0.Beta4</version>
<configuration>
<parentProfiles>containers-tomee hawtio</parentProfiles>
<profile>${fabric8.profile}</profile>
<profileVersion>${fabric8.version}</profileVersion>
<jolokiaUrl>http://${deploy-host}:${deploy-port}/jolokia</jolokiaUrl>
<webContextPath>/rest-example</webContextPath>
</configuration>
</plugin>
<distributionManagement>
<repository>
<id>fabric-maven-proxy</id>
<name>FMC Maven Proxy</name>
<!-- Change to your target host -->
<url>fabric::default::http://admin:${password}@${deploy-host}:${deploy-port}/maven/upload/</url>
</repository>
</distributionManagement>
その後、REST アプリケーションを開始するためのコンテナーを作成しました。index.html を表示できますが、WS を呼び出そうとすると常に 403 または 404 エラーが発生します。
助けてください。ありがとう
web.xml の変更を削除し、apache-tomee-jaxrs-1.7.1 をダウンロードして、このバージョンの tomee で実行するように構成すると、問題なく実行できます。
Fabric8-1.2.0.Beta4 で動作させるには、jaxrs と webprofile のバージョンの違いを把握する必要があります。
変更後の Web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
metadata-complete="false"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-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>
</web-app>
変更後の beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
<!-- do not use import statements if CXFServlet init parameters link to this beans.xml -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxrs:server id="restExampleService" address="/rest-example">
<jaxrs:serviceBeans>
<ref bean="postWS" />
<ref bean="commentWS" />
<ref bean="userWS" />
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="postWS" class="org.superbiz.rest.service.PostService" />
<bean id="commentWS" class="org.superbiz.rest.service.CommentService" />
<bean id="userWS" class="org.superbiz.rest.service.UserService" />
</beans>
また、Fabric8 のプロファイルに 4 つの機能を追加しました: spring-web spring cxf-jaxrs fabric-rest