我正在尝试使用WAR文件将Web服务部署到WebSphere,我直接告诉我这是完全可能的,并且之前已经完成了很多次。 WebSphere允许我上传文件,指定上下文根,甚至启动应用程序。但是,当我尝试通过指定我的底层URI来访问它时,WebSphere 404s就在我身上。显示的相对无用的错误消息是:
Error 404: SRVE0202E: Servlet [Jersey REST Service]: com.sun.jersey.spi.container.servlet.ServletContainer was found, but is corrupt: SRVE0227I: 1. Check that the class resides in the proper package directory. SRVE0228I: 2. Check that the classname has been defined in the server using the proper case and fully qualified package. SRVE0229I: 3. Check that the class was transferred to the filesystem using a binary transfer mode. SRVE0230I: 4. Check that the class was compiled using the proper case (as defined in the class definition). SRVE0231E: 5. Check that the class file was not renamed after it was compiled.
我已经检查了我的命名约定,根据this博客文章修改了我的web.xml,尝试packaging it into an ear file(当我尝试上传它时抛出了自己的错误),并且我正在尝试找出我可能错误的配置。关于我可以做些什么来改变它的想法?
修改
以下是我的web.xml文件的相关部分:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
id="WebAppId"
xmlns="http://java.sun.com/xml/ns/j2ee"
xsi="http://www.w3.org/2001/XMLSchema-instance"
schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>MYPROJECT'SDISPLAYNAME</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>MYPROJECTNAME</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
另一个编辑
我正在使用泽西岛的最新版本 - 这是问题的一部分吗?
又一个编辑
我很确定这是整个问题。 WebSphere 6.1运行jdk1.5,Jersey在Jersey 1.2之后停止支持...
答案 0 :(得分:1)
您怀疑您的问题缺少对Jersey(或更确切地说是JAX-RS)的WebSphere支持。
我没有在WAS支持的API列表中看到JAX-RS。
WAS 6.1在J2SE 1.5上运行(如上面的URL所示)
规范或API版本6.1
Java 2标准版(J2SE)规范J2SE 5
这些可能是您在WAS 6.1中看到错误的原因
HTH
Manglu