2016-08-03 106 views
0

我正在將我的應用程序升級到JBoss 7.1.1,現在將使用RestEasy。我遇到了RestEasy工作的問題。我收到錯誤HTTP狀態404 - 無法找到相對的資源。我相信這意味着它無法找到正確的端點。我懷疑是有一些問題掃描和註冊服務。但我可能是錯的。注:我沒有使用MavenJBoss 7 RestEasy ...服務沒有被註冊?

這裏是我的web.xml是涉及RestEasy的部分:

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</param-value> 
</context-param> 

<listener> 
    <listener-class> 
     org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 
    </listener-class> 
</listener> 


<servlet> 
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Resteasy</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

這裏是我使用的樣本資源:

import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 

@Path("/hello") 
public class HelloResource { 

@POST 
@Produces("text/plain") 
public String helloResource() { 
    return "Hello!"; 
} 
} 

的我已經嘗試過的網址是:http://localhost:8080/[project-name]/rest/hello

我認爲這就是我所用的所有通話。如果需要更多信息來回答我的問題,請不要猶豫,問。在此先感謝您的幫助!

P.S. - WAR中的文件需要如何構造?

[更新的web.xml]

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</param-value> 
</context-param> 

    <context-param> 
    <param-name>resteasy.resources</param-name> 
    <param-value>com.elderscan.test.RestEasyExample</param-value> 
</context-param> 

<servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.elderscan.test.MyApplication</param-value> 
    </init-param> 
</servlet> 


<servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

所以這讓我成功地做出RestEasyExample一個電話,但我不能讓另一其他休息服務,這顯然我需要做的電話。此外,這種將所有服務添加到xml的解決方案並不理想,因此另一種方式將是首選。

回答

1

端起來解決這個。關鍵是要包括這個什麼,我已經有了,每個單是休息服務:

public class MyApplication extends Application { 
private Set<Object> singletons = new HashSet<Object>(); 

public MyApplication() { 
    singletons.add(new RestEasyExample()); 
    singletons.add(new RestEasyExample2()); 
} 

@Override 
public Set<Class<?>> getClasses() { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public Set<Object> getSingletons() { 
    return singletons; 
} 
} 
0

我想你是對你的懷疑..嘗試添加該到你的web.xml

<context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>true</param-value> 
</context-param> 
+0

我要一些更新添加到我原來的職位,因爲我已經做了一些改動web.xml中,但我以前有過你在那裏提供的代碼片段,我會得到一個警告聲明,說resteasy.scan被忽略了(我認爲它在JBoss 7中是默認的)。然後它沒有部署。 [稍後添加] - 當我在新的web.xml中嘗試這個時,我部署得很好,但我得到的http狀態爲500,它給我錯誤java.lang.RuntimeException:無法找到類的公共構造函數org.jboss.resteasy.core.AsynchronousDispatche,這是部署失敗的原因。 –