Java – using wildfly 8’s simple rest API
First of all, I am a novice in this environment I've developed Java before, but I'm not an application server I've never done this before. I've never used JBoss or wildfly before
I have been able to set up and run the wildfly server in 127.0 0.1:9990 access it When I deploy War file, the server does not respond, I can't access the URL
The wildfly server did declare that my deployment was successful and active, and then I tried to access: 127.0 0.1:8080 / recapp API / rest / message / test, I get 404 (page error not found)
I'm using maven, so first, my 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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test.recapp.rest</groupId> <artifactId>RECAPP-API</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>3.0.6.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <version>3.0.6.Final</version> </dependency> </dependencies> </project>
My jsonservice java:
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; @Path("/message") public class JSONService { @GET @Path("/{param}") @Produces("application/json") public Response printMessage(@PathParam("param") String msg) { String result = "Restful example: " + msg; return Response.status(200).entity(result).build(); } }
Finally, my web xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>RECAPP-API</display-name> <context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>resteasy.servlet.mapping.prefix</param-name> <param-value>/rest</param-value> </context-param> <listener> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> </listener> <servlet> <servlet-name>resteasy-servlet</servlet-name> <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> </servlet> <servlet-mapping> <servlet-name>resteasy-servlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
Thanks for your help.
Solution
The best way to start quickly is to use this dependency
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency>
And add a class that extends the application class
@ApplicationPath("rest") public class ConfigApp extends Application { public ConfigApp(){ } }
nothing more. No web XML changes (only if web. XML is not required)
And use host: port / < warname > / rest / < endpoint Path > to access your rest endpoint