我正在尝试使用JAX-RS创建和部署RESTful Web服务并将其部署到tomcat。我不想使用任何IDE。在Tomcat中,webapps \中具有以下目录结构
notifire\WEB-INF\ | ---> web.xml | ---> \classes/Notifier.class | ---> \lib\javax.ws.rs-api-2.0
我的web.xml包含:
<servlet> <servlet-name>Web Service Servlet</servlet-name> <servlet-class>javax.ws.rs.core.Application</servlet-class> </servlet> <servlet-mapping> <servlet-name>Web Service Servlet</servlet-name> <url-pattern>/webservice/*</url-pattern> </servlet-mapping>
并且从文件Notifier.class编译了类文件Notifier.java。
Notifier.class
Notifier.java
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; @Path("notifier") public class Notifier { @Context private UriInfo context; @GET @Produces("text/html") public String getHTML() { return "<p></p>"; } }
当我尝试访问Web服务时http://localhost:8080/notifire/webservice/notifier,出现以下错误:
http://localhost:8080/notifire/webservice/notifier
--type例外报告 --message类javax.ws.rs.core.Application不是Servlet --description服务器遇到内部错误,阻止其满足此请求。
--type例外报告
--message类javax.ws.rs.core.Application不是Servlet
--description服务器遇到内部错误,阻止其满足此请求。
任何帮助表示赞赏。
您的Servlet类错误。不知道为什么不使用IDE,但是有一个Maven原型可以使用Jersey开发人员定义的适当类为您布置项目结构。我的web.xml看起来像这样:
<servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.pluralsight</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/webapi/*</url-pattern> </servlet-mapping>
我涵盖所有的这本课程在这里。