这是我拥有的pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hu.javacity.app.buildingsofcities</groupId>
<artifactId>city</artifactId>
<name>WildFly Swarm Example</name>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<version.wildfly.swarm>2018.4.1</version.wildfly.swarm>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>bom-all</artifactId>
<version>${version.wildfly.swarm}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-plugin</artifactId>
<version>${version.wildfly.swarm}</version>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- Java EE 7 dependency -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- WildFly Swarm Fractions -->
</dependencies>
</project>这就是HelloWorldEndpoint.java
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();
}
}在运行Maven后,它说:"WildFly群准备好了“,我没有得到任何错误,所以我尝试写以下网址: localhost:8080/hello结果是以下消息:”找不到“我尝试使用边缘,火狐或Chrome,但没有成功。
发布于 2018-05-04 03:23:03
所以这里有一些问题。首先,你错过了JAX-RS群的分数。这意味着您的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之类的东西,但就目前而言,这对您来说工作得很好。
https://stackoverflow.com/questions/50135142
复制相似问题