404例外与宁静的web服务泽西
问题描述:
我刚刚在我的mac(os x狮子)安装netbeans,我试图用泽西岛创建一个宁静的web服务。404例外与宁静的web服务泽西
当我去我的本地主机:8080/HelloWorld /测试/ printHello我得到一个404例外......所以我想我会看看我的web.xml ..但我无法找到该文件。
任何指针,我应该看看,我应该做什么?我的java类在下面发布。
@Path("/test")
public class helloworld {
@GET
@Path("printHello")
@Produces("text/plain")
public String printHello() {
return "Hello there!";
}
}
答
根据servlet 3.0规范,web.xml是可选的。
但是,当在Netbeans/Eclipse中创建一个Web项目时,我们将会给出一个选项来使用部署描述符。如果没有选项,我们可以显式创建web.xml。是的,我们需要一个web.xml来使用Jersey来完成稳定的Web服务,因为它的API公开了ServletContainer,它负责基于URL的类映射。
希望这会有所帮助!
答
NetBeans中的web.xml文件位于
WAR-Project with Maven
- Web Pages
- WEB-INF
- web.xml
在其位于文件夹结构:
WAR-Project with Maven
- src
- main
- webapp
- WEB-INF
- web.xml
在那里,你可以定义Jersey servlet外:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<!-- Jersey -->
<servlet>
<servlet-name>Jersey Web Application</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>package.path.to.your.rest.service;</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
现在您可以通过以下URL访问您的REST服务:
localhost:8080/HelloWorld/rest/test/printHello
如果您没有web.xml,您将如何部署到您的应用程序服务器?你正在使用哪一个?您应该首先配置Jersey servlet。 – 2012-08-03 06:56:16
我正在使用glassfish,并且我配置了Jersey Servlet – user1467188 2012-08-03 17:20:52
您是否仍然有问题? – Ruwantha 2012-08-17 10:55:26