【问题标题】:Cannot invoke webservice method in Jersey/java无法在 Jersey/java 中调用 webservice 方法
【发布时间】: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


【解决方案1】:

我查阅了另一个教程并找到了一些信息。创建了一个名为“ApplicationConfig.java”的 java 类,它具有以下标签:@javax.ws.rs.ApplicationPath("webresources")

所以我不得不使用这个 uri http://localhost:8080/HelloWorldApp/webresources/helloworld 调用方法

【讨论】:

    【解决方案2】:

    请分享您的 web.xml 和资源配置实现。如果您有任何自定义资源配置实现,那么您的资源文件必须在资源配置实现中注册。详情请参考http://cloudskol.com/index.php/2015/09/22/simple-get-method-implementation-in-restful-java/

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2014-04-05
      • 1970-01-01
      相关资源
      最近更新 更多