我使用这个名为CLAWS-Dicionario的测试项目,我试图在Glassfish服务器上运行它(它运行得完美无缺)。我只有那门课:
package com.k19.restful.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/helloworld")
public class HelloWorldResource {
@GET
@Produces("text/plain")
public String showHelloWorld() {
return "Olá mundo!";
}
}添加在web.xml,以便将泽西岛合并到其中
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.k19.restful.resources</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>我还在构建路径中添加了以下泽西库:
asm-debug-all-5.0.3.jar
javax.ws.rs-api-2.0.1.jar
jersey-server.jar
org.osgi.core-4.2.0所以我负责这个项目,一切都很好。但是当我试图访问这个URL时:
http://localhost:8080/CLAWS-Dicionario/helloworld它返回一个404错误。我确信主机位于8080端口( URL localhost:8080工作得很好)。那么问题是什么呢?
编辑:服务器开始出现另一个问题,这把我带到了domain.xml文件的那一行:
<application context-root="/CLAWS_-_Dicionário" object-type="user" name="CLAWS-Dicionario" directory-deployed="true" location="${com.sun.aas.instanceRootURI}/eclipseApps/CLAWS-Dicionario/">修理CLAWS_-_Dicionário部件。这会是我项目的真名吗?为了使服务器工作,我不得不删除重音,并且在运行project...and时找不到更多的控制台响应,即使我尝试了http://localhost:8080/CLAWS_-_Dicionario/helloworld,错误仍然存在,so...just发现了一些重要的问题。
发布于 2015-08-17 19:39:41
根据您使用的Servlet版本,您需要:
对于Servlet 2.x实现:
对于Servlet 3.x实现:
org.glassfish.jersey.servlet.ServletContainer没有打包在jersey-server.jar中。
根据类ServletContainer的api文档
如果初始化参数不存在,并且存在初始化参数"jersey.config.server.provider.packages“(请参阅ServerProperties.PROVIDER_PACKAGES),则将创建具有此配置的ResourceConfig的新实例。必须将初始化参数"jersey.config.server.provider.packages“设置为提供一个或多个包名。每个包名必须用';‘分隔。
在2.x版本中,参数com.sun.jersey.config.property.packages已被jersey.config.server.provider.packages所取代。
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.k19.restful.resources</param-value>
</init-param>在domain.xml中,您应该有表示应用程序可访问的url路径的context-root:
<application context-root="/CLAWS-Dicionario" object-type="user" name="CLAWS-Dicionario" directory-deployed="true" location="${com.sun.aas.instanceRootURI}/eclipseApps/CLAWS-Dicionario/">允许您从以下站点访问应用程序:
http://localhost:8080/CLAWS-Dicionario/helloworldhttps://stackoverflow.com/questions/32057923
复制相似问题