Simple REST API with WildFly 8

Firstly, I am new to this environment. I developed Java before, but not for the application server. I never did this, I had never worked with JBoss or WildFly before.

I was able to configure and start the WildFly server and access it at 127.0.0.1:9990 . When I deploy my .war file, the server does not respond and I cannot access the URLs.

The WildFly server indicates that my deployment was successful and active, then I try to access: 127.0.0.1:8080/RECAPP-API/rest/message/test , and I get 404 (page error not found).

I use Maven, so pom.xml first:

 <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(); } } 

And 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> 

Thank you for your help.

+6
source share
3 answers

The best way to get started 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 extending the application class

 @ApplicationPath("rest") public class ConfigApp extends Application { public ConfigApp(){ } } 

Here it is. No changes to web.xml (only for web.xml).

And access the resting endpoint with host:port/<warname>/rest/<endpoint path>

+5
source

In Wildfly Quickstart, they prefer to use the JaxRsActivator class: Add this to configure the REST service.

 /** * A class extending {@link Application} and annotated with @ApplicationPath is the Java EE 6 "no XML" approach to activating * JAX-RS. * * <p> * Resources are served relative to the servlet path specified in the {@link ApplicationPath} annotation. * </p> */ @ApplicationPath("/rest") public class JaxRsActivator extends Application { /* class body intentionally left blank */ } 

As the comments say, this is a non-xml approach.

+3
source

Your example looks right.

This helps reboot the jboss server and redistribute the WAR to eliminate potential caching.

Alternatively, your web.xml can be shortened to use javax.ws.rs.core.Application , as shown below.

 <?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> <servlet-mapping> <servlet-name>javax.ws.rs.core.Application</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app> 
+1
source

All Articles