2011年2月9日 星期三

JAX-RS Tomcat + Jersey(2)

在 tomcat 7 及其他 JAVAEE 6 平台上架 JAX-RS 服務

  • tomcat 版本 7.0.8
  • jesrey 版本 1.5
  • jboss 版本 6.0.final
  • glassfish 3.0.1
步驟同 tomcat 6 的版本
  1. 建立 maven 上相關設定
  2. 撰寫 service
  3. 撰寫 application
  4. 設定 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>

另外需修改 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>

1 則留言:

Unknown 提到...

實在太感謝Steven了~
剛好解決了我目前的問題~
自從改用Tomcat7在jersey整合上一直出現問題...