【发布时间】:2014-05-16 15:37:46
【问题描述】:
我仍在使用 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”从何而来?我不知道。当我在我的请求 url 中留下“/users”时,error.log 中将只有 1 个“/users”,但仍然找不到资源。
还有一件事我还没有发现:如何更改我的服务名称? Atm,它是“android”,但我怎么能改变它呢?我搜索了整个工作区,在我的 pom.xml 中找到了“android”,但是当我将其更改为“testandroid”时,上传所有内容,构建并运行服务器,名称仍然是 android。不知道为什么会这样。
谢谢你们的帮助!
编辑: 这是我的“主要”课程:
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。该应用程序在码头服务器上运行。如果您可以使用任何进一步的信息,请告诉我。
【问题讨论】: