2016-04-27 33 views
2

我創建了一個示例項目並將EJB 3.1與RESTful Web服務一起使用。在示例中,我有一個延伸Application的類。我期望這個類像一個servlet一樣工作,並將請求分派給適當的類,但是它沒有。當我使用web.xml時,我的示例項目正常工作。我的示例項目出了什麼問題?沒有web.xml的RESTful應用程序

@ApplicationPath("/rest") 
public class ApplicationServlet extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> classes = new HashSet<Class<?>>(); 
     classes.add(UserWS.class); 
     return classes; 
    } 
} 

我用UserWS作爲EJB會話bean暴露Web服務:

@Stateless 
@LocalBean 
@Path("/user") 
public class UserWS { 

    private int count; 

    public UserWS() { 
     this.count=0; 
    } 

    @GET 
    @Path("/name/{username}") 
    public void getUserName(@PathParam("username") String username) { 
     count++; 
     System.out.println("count is:"+ count); 
    } 
} 
+0

當您嘗試調用REST服務時,* web.xml *的內容是什麼? – aribeiro

+0

<!DOCTYPE web-app PUBLIC 「 - // Sun Microsystems,Inc. //DTD Web Application 2.3 // EN」 「http://java.sun.com/dtd/web-app_2_3.dtd」> 原型創建的Web應用程序 helen66

+0

這是一個相當簡單的* web.xml * :)你如何調用你的REST服務? – aribeiro

回答

4

恐怕是不可能的,一旦JBoss的5.0僅支持的Servlet 2.5。有關更多詳細信息,請參見here

要避免部署描述符web.xml,您需要一個servlet容器,支持至少Servlet 3.0


那麼,你能做些什麼來解決它?

這些是到了我心中的選擇:

  1. 你可以嘗試升級所描述here JBoss的網站(由JBoss AS中使用Tomcat的叉),但嘗試,在你自己的風險

  2. 考慮使用最新版本的JBoss/WildFly。

+0

謝謝!我更改了應用程序服務器並將其更新爲WildFly 10以及JDK 1.8。我的示例項目現在工作正常,沒有web.xml! – helen66

+0

@ helen66請考慮接受我的回答:) –