我仍在开发 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/