【发布时间】:2016-05-29 10:34:23
【问题描述】:
我使用 netbeans 和 jersey 制作了一个准系统的 hello world 网络服务。 我的问题是当我将我的 web 服务部署到服务器时(我正在使用 glass fish)它会将我带到索引页面,但我无法调用我在 java 类中创建的方法。
我的 glassfish 服务使用的域是
http://localhost:8080/HelloWorldApp/
要调用我的方法(从我读到的),这是这样做的方法:
http://localhost:8080/HelloWorldApp/helloworld
但是,这给了我一个 404。我遵循了许多示例,但似乎无法在我的网络浏览器中调用该方法。
但是,当我单击 netbeans 中的 test RESTful Webservices 时,我可以调用该方法。
这是我定义方法的方式:
package HelloWorldResource;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/helloworld")
public class Hellworld {
@Context
private UriInfo context;
/**
* Creates a new instance of Hellworld
*/
public Hellworld() {
}
/**
* Retrieves representation of an instance of HelloWorldResource.Hellworld
* @return an instance of java.lang.String
*/
@GET
@Produces(MediaType.TEXT_HTML)
public String getHtml() {
//TODO return proper representation object
return "<HTML>Hello</HTML>";
}
/**
* PUT method for updating or creating an instance of Hellworld
* @param content representation for the resource
*/
@PUT
@Consumes(MediaType.TEXT_HTML)
public void putHtml(String content) {
}
【问题讨论】:
-
您还有其他配置吗?仅仅一个资源类是不够的。您需要 web.xml 配置或 Java 配置。如果你没有任何配置,看看this
-
嗯,我遵循了这个指南:docs.oracle.com/cd/E19776-01/820-4867/ghmsj 显然 netbeans 为我设置了所有 web.xml 内容?我可能是错的,但它没有遍历指南中的那个文件
-
这不是一个很好的教程。它没有提到任何关于配置的内容,这是必需的。如果创建应用程序的步骤之一没有创建 web.xml(具有所需的 Jersey 配置)或 JAX-RS 应用程序子类,那么您需要自己添加它。也许寻找更好的教程。
-
其实显然 web.xml 是不需要的。我在我的项目中找不到它,但我查找了另一个教程并找到了一些信息。创建了一个名为“ApplicationConfig.java”的java类,它有这个标签:@javax.ws.rs.ApplicationPath("webresources") 所以我不得不使用这个uri调用方法
http://localhost:8080/HelloWorldApp/webresources/helloworld
标签: java web-services rest jersey jax-rs