java - jax-rs 和服务器名称

标签 java maven jax-rs

我仍在开发 jax-rs 服务器,最近遇到了一些新问题。我不明白在哪里定义网络服务器的名称。我搜索了工作区中的所有内容,但什么也没找到。 让我们进一步解决这个问题:

我总是通过http://XXXXXX.XXXXX.XXX-XXXXXXX.de/android/访问我的服务器的@GET方法

这是我的服务器类的结构:

@Path("/users")
public class UserResource {

Connection dbconn = null;

public UserResource() {
    userIds = new ArrayList<Integer>();
    userIds.add(1);
    userIds.add(2);
    userIds.add(3);
}

@GET
@Path("/login/{id}")
@Consumes("application/xml")
public StreamingOutput getTests(@PathParam("id") int id, InputStream is) {
    return new StreamingOutput() {
        public void write(OutputStream outputStream) throws IOException,
                WebApplicationException {
            getTests(outputStream);
        }
    };
}

如你所见,我的类的路径是“/users”,@GET方法的路径是“/login/1”(例如id = 1)。现在我尝试通过调用该方法

http://XXXXXX.XXXXX.XXX-XXXXXXX.de/android/users/login/1

但这不起作用。我收到错误(来源未知)。我的 error.log 说它找不到资源

http://XXXXXX.XXXXX.XXX-XXXXXXX.de/users/users/login/1

我的第一个问题:双“/users”从哪里来?我不知道。当我在请求网址中保留“/users”时,error.log 中将只有 1 个“/users”,但仍然找不到资源。

还有一件事我还没弄清楚:如何更改我的服务名称? Atm,它是“android”,但我怎样才能改变它呢?我搜索了整个工作区,在 pom.xml 中找到了“android”,但是当我将其更改为“testandroid”,上传所有内容,构建并运行服务器时,名称仍然是 android。不知道为什么会这样。

感谢你们的帮助!

编辑: 这是我的“主要”类(class):

package com.restfully.services;

import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

public class ServerApplication extends Application {
   private Set<Object> singletons = new HashSet<Object>();
   private Set<Class<?>> empty = new HashSet<Class<?>>();

   public ServerApplication() {
      singletons.add(new UserResource());
   }

   @Override
   public Set<Class<?>> getClasses() {
      return empty;
   }

   @Override
   public Set<Object> getSingletons() {
      return singletons;
   }
}

我正在使用 Eclipse 和 Maven。该应用程序在 jetty 服务器上运行。如果您需要任何进一步的信息,请告诉我。

最佳答案

您可以在以下地方查看

上下文根的 Pom.xml 文件包含以下条目;

<configuration>
    <context>yourWarName</context>
</configuration>

使用 Netbeans 检查项目属性下的运行类别上下文路径。

Context Path: /yourWarName  

也看看您的 web.xml

使用 jax-rs 时,您通常定义一个配置类;

@ApplicationPath("resources")
public class RestConfig extends Application{

}

从那里您可以定义其他路径;

    @Stateless
    @Path("/login")
    public class LoginResource

    public Response login(Credentials credentials) {
    Credentials result = this.loginService.login(credentials);
            return Response.status(Response.Status.OK).entity(result).build();
     }

以下路径为:http://domain.com/MyApp/resources/login 其中 MyApp 是上下文根。

可能是在 config 或 root 中指定了一个名为 users 的路径,您将获得双用户。

关于java - jax-rs 和服务器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860835/

相关文章:

java - 如果子查询的结果集列值为 NULL,则显示某个值

maven 程序集,避免 zip 文件中的完整路径?

maven - 如何配置 grails 2.4.0 以通过身份验证解析来自 JFrog Artifactory 的 Artifact ?

java - Java Jersey 中的异步

java - Oozie Java Action System.out

Java SOAP - 产品广告 API - 响应为空

java - 使用 Spring Boot 和多模块的 Maven 配置 - 在 Intellij 中运行应用程序

tomcat - JAX-RS/Jersey + Tomcat ServletContext 为空

java - @ConvertGroup 基于参数

java - xpath 重命名疯狂层次结构中的单个类