簡體   English   中英

JBoss 7 RestEasy…服務未注冊?

[英]JBoss 7 RestEasy…services not being registered?

我正在將我的應用程序升級到JBoss 7.1.1,現在將使用RestEasy。 我在讓RestEasy上班時遇到問題。 我收到錯誤HTTP狀態404-找不到相對的資源。 我相信這意味着它找不到正確的端點。 我懷疑掃描和注冊服務時會出現一些問題。 我可能是錯的。 注意:我沒有使用Maven

這是我的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 / [項目名稱] / rest / hello

我想這就是我正在使用的電話。 如果需要其他信息來回答我的問題,請隨時提出。 在此先感謝您的幫助!

PS-如何在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,但無法調用其他顯然需要做的其他REST服務。 此外,這種將我所有服務添加到xml的解決方案也不理想,因此將首選另一種方法。

最終解決了這個問題。 關鍵是將其包括到我已經擁有的服務中,其中每個單身人士都是休息服務:

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;
}
}

我認為您的懷疑是對的。嘗試將其添加到web.xml中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM