在 tomcat 7 及其他 JAVAEE 6 平台上架 JAX-RS 服務
- tomcat 版本 7.0.8
- jesrey 版本 1.5
- jboss 版本 6.0.final
- glassfish 3.0.1
- 建立 maven 上相關設定
- 撰寫 service
- 撰寫 application
- 設定 web.xml
步驟3,4內容有異
在步驟3加上 application url 宣告
步驟4 web.xml 部份無須任何添加相關 servlet 宣告
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name><param-value>base.steven.app.RSApp</param-value></init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rs/*</url-pattern>
</servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name><param-value>base.steven.app.RSApp</param-value></init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rs/*</url-pattern>
</servlet-mapping>
另外需修改 pom 檔中 javaee 的版本使其支援 servlet 3.0 的規範
這樣的寫法較與底層實作無關,移稙性較高(portable), 但僅限 servlet 3.0 的規範
相同的做法可移稙到 jboss 6 或 glassfish 3.x 以上的平台, 因javaee 6 specc 本身即支援 restful service, 所以打包的 war 檔無須再包含 jesrey 有關的套件。僅需在 pom 檔上移除對 jesrey 的相依設定
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.5</version>
</dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.5</version>
</dependency>
1 則留言:
實在太感謝Steven了~
剛好解決了我目前的問題~
自從改用Tomcat7在jersey整合上一直出現問題...
張貼留言