簡體   English   中英

部署后,為什么我在RESTEasy(wildfly)上出現404錯誤?

[英]Why do I get 404 error on RESTEasy (wildfly) after deploy?

我用Java創建了簡單的3個文件,並使用mvn clean package wildfly:deploy命令來運行它。 它全部部署成功(至少那是在控制台中寫的)。 但是,當我去

HTTP://本地主機:8080 /實驗室REST的API /庫/書

我收到404錯誤。 我的項目位於模塊lab-rest-api(它只是項目的一部分,其他模塊用於web消費 - ejb,ear等)

我做了網絡服務和簡單​​的網絡消費,它很好。 但是,REST API無法正常工作。

這是我的pom.xml:

 <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>3.6.3.Final</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>3.6.3.Final</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>3.6.3.Final</version>
        <scope>provided</scope>
    </dependency>

我的延伸申請:

@ApplicationPath("/")
public class RESTMain extends Application {
    public RESTMain() {
        System.out.println("whatever");
    }

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

我的服務:

@Path("/library")
@Consumes({"application/json"})
@Produces({"application/json"})
public class ServicesInterface {

    Book booky = new Book();

    @GET
    @Path("/book/{title}")
    public Book getBook(@PathParam("title") String title){
        return booky;
    }

    @PUT
    @Path("/book/{title}")
    public Book addBook(@PathParam("title") String title, @QueryParam("author") String author){
        return booky;
    }

    @POST
    @Path("/book/{title}")
    public Book updateBook(@PathParam("title") String title, String author){
        return booky;
    }


    @DELETE
    @Path("/book/{title}")
    public Book removeBook(@PathParam("title") String title){
        return booky;
    }

}

“Book”是一個簡單的類,包含2個字符串(作者和標題)以及它的getter和setter。

你似乎沒有實現Get for \\book 你只實現了\\book\\{title}

對於您當前的實現,請嘗試\\book\\{meaningful title in your database}

可以,然后呢,

解決此問題的步驟:

1)包裝戰爭

<packaging>war</packaging>到您的pom文件中。 還添加

<plugin> 
  <artifactId>maven-war-plugin</artifactId> 
  <version>2.4</version> 
  <configuration> 
    <failOnMissingWebXml>false</failOnMissingWebXml> 
    </configuration> 
</plugin>

2)升級wildfly maven插件

<version.wildfly.maven.plugin>2.0.1.Final</version.wildfly.maven.plugin>

3)刪除重復的依賴項

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
    <scope>compile</scope>
</dependency>

4)從wildfly-maven-plugin配置中刪除這些額外的東西

<inherited>true</inherited>
<configuration>
    <skip>true</skip>
</configuration>

5)運行你的mvn clean package wildfly:deploy

6)瀏覽到http:// localhost:8080 / lab-rest-api-1.0-SNAPSHOT / library / book / asd

獎金:接受的答案顯示了如何從URL中移除-1.0快照

暫無
暫無

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

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