package de.scout.test.rest.server;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.eclipse.scout.commons.exception.ProcessingException;
import org.eclipse.scout.service.SERVICES;
@Path("/hello")
public class Hello {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
try {
String result = SERVICES.getService(IHelloService.class).getGreetings();
return "{" + "SAY: " + result + "}";
}
catch (ProcessingException e) {
e.printStackTrace();
}
return "";
}
package de.scout.test.rest.server;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
public class JerseyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> result = new HashSet<Class<?>>();
result.add(Hello.class);
return result;
}
}
package de.scout.test.rest.server;
//...
import org.glassfish.jersey.servlet.ServletContainer;
//...
public class ProxyServletContainer extends ServletContainer {
//....
@Override
protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
try {
lazyInit(request, response);
Subject subject = new Subject();
subject.getPrincipals().add(new SimplePrincipal("server"));
UserAgent agent = UserAgent.createDefault();
if (subject != null && agent != null) {
IServerSession session = lookupScoutServerSessionOnHttpSession(request, response, subject, agent);
ServerJob serverJob = new ServerJob("Transactional handler", session, subject) {
@Override
protected IStatus runTransaction(IProgressMonitor monitor) throws Exception {
ServletContainer sc = new ServletContainer();
sc.init(getServletConfig());
sc.service(request, response);
return Status.OK_STATUS;
}
};
serverJob.setSystem(true);
serverJob.runNow(new NullProgressMonitor());
}
else {
throw new ServletException("could not create subject or agent!");
}
}
catch (ProcessingException ex) {
throw new ServletException(ex);
}
}
//....
}