这是我的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,但没有成功。
答案 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
的内容,但现在这样可以正常使用。