[英]jax-rs and server name
我仍在jax-rs服務器上工作,最近遇到了一些新問題。 我不知道在哪里定義我的Web服務器的名稱。 我搜索了工作區中的所有內容,但找不到任何內容。 讓我們進一步解決這個問題:
我總是通過http://XXXXXX.XXXXX.XXX-XXXXXXX.de/android/
訪問服務器的http://XXXXXX.XXXXX.XXX-XXXXXXX.de/android/
方法
這是我的服務器類的結構:
@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。 該應用程序在碼頭服務器上運行。 如果您可以使用任何其他信息,請告訴我。
您可以在以下地方查看
用於上下文根的Pom.xml文件包含以下條目;
<configuration>
<context>yourWarName</context>
</configuration>
使用Netbeans,在項目屬性下檢查“運行類別”上下文路徑。
Context Path: /yourWarName
也查看您的web.xml
。
當使用jax-rs時,通常定義一個config類。
@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中指定了一個路徑,其名稱為獲得雙重用戶的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.