2014-10-01 2 views
0

Я использую Netbeans и Glassfish. Недавно я создал новое веб-приложение Maven. Я добавил новый WebServlet, он отлично работал.Netbeans не может найти мой спокойный webservices

@WebServlet(name = "DbTest", urlPatterns = {"/DbTest"}) 
public class DbTest extends HttpServlet { 

/** 
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> 
* methods. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException { 
    response.setContentType("text/html;charset=UTF-8"); 


    Session session = StartupBean.sessionFactory.openSession(); 
    session.beginTransaction(); 
..... 

Теперь я хочу добавить некоторые веб-службы RESTful. Поэтому я добавил еще один класс.

@Path("/yeahbuddy/") 
public class YeahbuddyResource { 

@GET 
public String getAllYeahbuddies() { 

    return "WE GOT GOT"; 

} 

}

Тогда я моюсь, встроенным, побежал сервер, и .... ничего. Я пытался ударять следующие ссылки:

http://localhost:8080/myapp/webresources/yeahbuddy/ 
http://localhost:8080/myapp/yeahbuddy/ 
http://localhost:8080/myapp/resources/yeahbuddy/ 

Все, что я когда-либо получаю 404. Тогда я подумала, что, должно быть, что-то пропустил и использовать мастер для добавления веб-службы RESTful из шаблона. Та же проблема.

Я чувствую, что есть какая-то конфигурация, которую мне не хватает, например, аннотации недостаточно, или аннотации REST борются с аннотациями WebServlet.

Мысли?

EDIT: Ответ добавлял следующий web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>test</display-name> 
<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <!-- Register resources and providers under com.vogella.jersey.first package. --> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.myapp.resources</param-value> 
    </init-param> 
<load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

И начал работать по следующему адресу:

http://localhost:8080/myapp/api/yeahbuddy/ 
+0

ли вы определить его в файле web.xml, как: <сервлет-класс> org.glassfish.jersey.servlet.ServletContainer? –

+0

@BrunoFranco - нет, проект не появился с web.xml, я добавил один и сейчас ищу примеры. – bulltorious

ответ

1

Поскольку вы собираетесь использовать Restful на вашем Glassfish я предполагаю, что вы будет использовать Джерси-внедрение Jax-RS, поэтому вам нужно будет определить его в своем web.xml, примерно так:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>com.vogella.jersey.first</display-name> 
<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>paramValue</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/yeahbuddy/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Итак, каждый запрос, сделанный URL-адресами с/yeahbuddy/..., будет отображаться, например, в ваш класс Rest.

Взгляните на этот хороший учебник:

http://www.vogella.com/tutorials/REST/article.html

+0

Это сделало. Благодарю. – bulltorious

+0

есть ли способ сделать это без использования web.xml? Просто любопытно, что книга, которую я использовал, никогда не упоминает об этом, но я считаю, что она не использует старую рыбку. – bulltorious

+0

Посмотрите эту тему: http://stackoverflow.com/questions/9373081/how-to-set-up-jax-rs-application-using-annotations-only-no-web-xml –