Wildfly swarm - 找不到页面错误

时间:2018-05-02 12:52:44

标签: maven wildfly wildfly-swarm

这是我的pom.xml文件

package hu.javacity.app.buildingsofcities.city.rest;


import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;


@Path("/hello")
public class HelloWorldEndpoint {

    @GET
    @Produces("text/plain")
    public Response doGet() {
        return Response.ok("Hello from WildFly Swarm!").build();
    }
}

这将是HelloWorldEndpoint.java

<select class="custom-select">
  <option value="1">Telegram</option>
  <option value="2">WhatsApp</option>
</select>

运行Maven之后,它说:&#34; WildFly Swarm准备就绪&#34;我没有得到任何错误所以我试着写下以下网址:localhost:8080 / hello结果是以下消息:&#34; not found&#34;我尝试使用Edge,Firefox或Chrome,但没有成功。

1 个答案:

答案 0 :(得分:1)

所以这里有一些问题。首先,您错过了JAX-RS Swarm Fraction。这意味着pom.xml中的依赖关系需要如下所示:

  <dependencies>
    <!-- Java EE 7 dependency -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- WildFly Swarm Fractions -->
    <dependency>
      <groupId>org.wildfly.swarm</groupId>
      <artifactId>jaxrs</artifactId>
    </dependency>
  </dependencies>

现在第二个问题。在Wildfly Swarm的2018.4.1版本中,swarm团队删除了标准JAX-RS应用程序所需的javax.ws.rs.core.Application的自动生成(有关详细信息,请参阅this blog)。如果您尝试在2018.4.1中启动代码,则会收到警告:

  

WFLYRS0015:找不到JAX-RS应用程序的Servlet声明。在   demo.war要么提供一个扩展的类   javax.ws.rs.core.Application或在web.xml中声明一个servlet类。

您的申请无效。因此,您有两种方法可以解决 问题。第一种是使用2018.3.1,因为它会进行自动生成。然而,这是一个糟糕的解决方案,因为,向前,Swarm可能会继续2018.4.1版本的行为。因此,要修复它,您需要添加自己的javax.ws.rs.core.Application,其外观如下:

package hu.javacity.app.buildingsofcities.city.rest;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/")
public class RestApplication extends Application {
    // intentionally empty
}

这会将您的JAX-RS路径设置为/。一种常见的模式是使用类似/rest/svc的内容,但现在这样可以正常使用。