Skip to content

Instantly share code, notes, and snippets.

@vdevigere
Last active September 29, 2020 15:21
Show Gist options
  • Save vdevigere/efe7fcd090ba5482840e to your computer and use it in GitHub Desktop.
Save vdevigere/efe7fcd090ba5482840e to your computer and use it in GitHub Desktop.
Undertow, Resteasy, Weld
package org.viddu.poc;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.inject.Inject;
import javax.ws.rs.core.Application;
public class MyApplication extends Application {
@Inject
MySingletonResource mySingletonResource;
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new LinkedHashSet<Class<?>>();
resources.add(HelloResource.class);
return resources;
}
@Override
public Set<Object> getSingletons() {
Set<Object> resources = new LinkedHashSet<Object>();
resources.add(mySingletonResource);
return resources;
}
}
package org.viddu.poc;
import javax.enterprise.inject.Produces;
import javax.inject.Named;
public class MyCDIModule {
@Named("Single")
@Produces
public String message() {
return "I am single";
}
}
package org.viddu.poc;
import io.undertow.Undertow;
import io.undertow.servlet.Servlets;
import io.undertow.servlet.api.DeploymentInfo;
import javax.servlet.ServletException;
import javax.ws.rs.core.Application;
import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer;
import org.jboss.resteasy.spi.ResteasyDeployment;
public class MyServer {
private final UndertowJaxrsServer server = new UndertowJaxrsServer();
public MyServer(Integer port, String host) {
Undertow.Builder serverBuilder = Undertow.builder().addHttpListener(port, host);
server.start(serverBuilder);
}
public DeploymentInfo deployApplication(String appPath, Class<? extends Application> applicationClass) {
ResteasyDeployment deployment = new ResteasyDeployment();
deployment.setInjectorFactoryClass("org.jboss.resteasy.cdi.CdiInjectorFactory");
deployment.setApplicationClass(applicationClass.getName());
return server.undertowDeployment(deployment, appPath);
}
public void deploy(DeploymentInfo deploymentInfo) throws ServletException {
server.deploy(deploymentInfo);
}
public static void main(String[] args) throws ServletException {
MyServer myServer = new MyServer(8080, "0.0.0.0");
DeploymentInfo di = myServer.deployApplication("/rest", MyApplication.class)
.setClassLoader(MyServer.class.getClassLoader())
.setContextPath("/myApp")
.setDeploymentName("My Application")
.addServlets(Servlets.servlet("helloServlet", org.viddu.poc.HelloServlet.class).addMapping("/hello"))
.addListeners(Servlets.listener(org.jboss.weld.environment.servlet.Listener.class));
myServer.deploy(di);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment