0

埋め込まれた桟橋で実行されているジャージー アプリケーションがあります。彗星の機能を利用するために、atmosphere-jersey を使用するように変換したいのですが、少し行き詰まっています。どんな助けでも大歓迎です。私のジャージ コードは、ResourceConfig で構成されたジャージ ServletContainer を使用して、リソース インスタンスを指定します。

ResourceConfig.registerInstances(resourceInstance);
new org.glassfish.jersey.servlet.ServletContainer(ResourceConfig);

同じセットアップを大気で動作させる方法がわかりません。AtmosphereServlet があることがわかります。それにリソースインスタンスを提供することは可能ですか?

これは、現時点でジャージ/桟橋がどのように設定されているかです...

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.server.ResourceConfig;

public class HelloWorldJerseyJetty {

    // http://localhost:8080/resources/resource

    public static void main(String[] args) throws Exception {

        Server server = new Server(8080);

        ResourceConfig config = new ResourceConfig();
        config.registerInstances(new Resource("Hello World"));
        org.glassfish.jersey.servlet.ServletContainer jerseyServlet = new org.glassfish.jersey.servlet.ServletContainer(config);

        ServletContextHandler handler = new ServletContextHandler();
        handler.addServlet(new ServletHolder(jerseyServlet), "/resources/*");

        server.setHandler(handler);
        server.start();
        server.join();

    }

    @Path("resource")
    public static class Resource {

        private final String message;

        public Resource(String message) {
            this.message = message;
        }

        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String get() {
            return message;
        }
    }
}

jersey から AtmosphereServlet に切り替えるにはどうすればよいですか? また、インスタンスを使用するように設定するにはどうすればよいですか?

        ResourceConfig config = new ResourceConfig();
        config.registerInstances(new Resource("Hello World"));
        AtmosphereServlet atmosphereServlet = new AtmosphereServlet();
        atmosphereServlet.???

        ServletContextHandler handler = new ServletContextHandler();
        handler.addServlet(new ServletHolder(atmosphereServlet), "/resources/*");
4

1 に答える 1

0

このように AtmosphereServlet を構成しましたが、動作します。おそらくあなたの質問には遅すぎるかもしれませんが、他の人にも役立つかもしれません:)

    Server server = new Server(8080); 

    //static files handler        
    ResourceHandler resource_handler = new ResourceHandler();
    resource_handler.setDirectoriesListed(true);
    resource_handler.setWelcomeFiles(new String[] { "index.html" });
    resource_handler.setResourceBase("./src/main/webapp/");

    ContextHandler context1 = new ContextHandler();
    context1.setHandler(resource_handler);

    //Atmosphere
    AtmosphereServlet atmosphereServlet = new AtmosphereServlet();
    ServletHolder servletHolder = new ServletHolder(atmosphereServlet);
    servletHolder.setInitParameter("com.sun.jersey.config.property.packages","org.atmosphere.samples.chat.jersey");
    servletHolder.setInitParameter("org.atmosphere.websocket.messageContentType", "application/json");
    servletHolder.setAsyncSupported(true);
    servletHolder.setInitParameter("org.atmosphere.useWebSocket","true");

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.addServlet(servletHolder, "/resources/*");

    HandlerList handlers = new HandlerList();
    handlers.addHandler(context1);
    handlers.addHandler(context);        

    server.setHandler(handlers);
于 2014-07-03T15:35:19.597 に答える