2016-09-20 4 views
1

Я пытаюсь создать веб-приложение Java в Intellij, используя Wildfly as Application server. В моем веб-приложении я пытаюсь настроить модуль для успокоительных веб-сервисов (с библиотекой RestEasy), но когда я пытаюсь проверить мой restful webservice (как метод post), я получаю сообщение «HTTP POST-метод не поддерживается этим URL». я не понимаю, почему я вижу это сообщение ...HTTP-метод POST не поддерживается этим URL-адресом в WildFly

я запускаю мою службу остальное следующим образом:

http://localhost:8080/rest/email/myName/[email protected]/myMessage 

В моей pom.xml я добавил необходимую библиотеку:

<dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0.1</version> 
</dependency> 

<dependency> 
     <groupId>javax.ejb</groupId> 
     <artifactId>ejb-api</artifactId> 
     <version>3.0</version> 
</dependency> 

<dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jaxrs</artifactId> 
     <version>3.0.19.Final</version> 
</dependency> 

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
</dependency> 

В моей web.xml я добавил это:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

    <display-name>Smoney-RS</display-name> 

    <servlet> 
     <servlet-name>Resteasy</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.myapp.rs.api</param-value> 
     </init-param> 
    </servlet> 

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

Наконец, мой Java-класс для отдыха API:

import javax.ws.rs.*; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

@Path("/email") 
public class EmailRestfulImpl 
{ 

    @POST 
    @Path("/{name}/{address}/{message}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response sendContactUs(@PathParam("name") String name, @PathParam("address") String address, @PathParam("message") String message) 
    { 
     EmailRequest emailRequest = new EmailRequest(); 
     emailRequest.setName(name); 
     emailRequest.setEmail(address); 
     emailRequest.setMessage(message); 

     return Response.status(Response.Status.OK).entity(emailRequest).build(); 

    } 
} 

Что я делаю не так?

+1

Что произойдет, если вы перейдете на этот отдых ?? –

ответ

0

Я решил проблему. Контекст был неправильным. Я пытался назвать это:

http://localhost:8080/rest/email/myName/[email protected]/myMessage 

Правильный путь был таков:

http://localhost:8080/MYAPP-SNAPSHOT-1.0/rest/email/myName/[email protected]/myMessage 

Я решил добавления контекста путь тега в моей JBoss-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" 
    "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 
<jboss-web> 
    <context-root>/rest</context-root> 
</jboss-web> 

И, наконец, я добавил контекстный параметр в свой web.xml следующим образом:

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

Я надеюсь, что это будет полезно для вас!

 Смежные вопросы

  • Нет связанных вопросов^_^