2016-09-20 134 views
1

我正嘗試在Intellij中使用Wildfly作爲應用程序服務器來構建Java Web應用程序。 在我的網絡應用程序中,我試圖配置一個用於restful web服務(與RestEasy庫)的模塊,但是當我嘗試測試我寧靜的web服務時(作爲post方法),我收到消息「HTTP方法POST不受此支持URL」。 我不明白爲什麼我看到這條消息...HTTP方法POST在WildFly中不受此URL支持

我啓動我的休息服務如下:

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> 

最後,我對REST API的Java類:

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> 

我希望能對你有所幫助!

相關問題