Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于通过IIS为java应用程序提供服务的轻量级servlet引擎_Java_Iis_Iis 7_Servlets - Fatal编程技术网

用于通过IIS为java应用程序提供服务的轻量级servlet引擎

用于通过IIS为java应用程序提供服务的轻量级servlet引擎,java,iis,iis-7,servlets,Java,Iis,Iis 7,Servlets,我有一个旧的遗留java web应用程序,我希望将其部署在与我的asp.net应用程序(在IIS 7上运行)相同的服务器上。我需要让所有应用程序都在端口80上运行,所以我不能只在不同的端口上安装两个web服务器 java应用程序非常简单,只有几个Serverlet(没有JSP),其功能非常接近“Hello World”。所以我希望servlet引擎尽可能轻量级。我认为Tomcat对此过于夸张。 这样的产品存在吗?或者我被Tomcat困住了?看看。它可以从标准的主调用调用,并且可以很好地处理ser

我有一个旧的遗留java web应用程序,我希望将其部署在与我的asp.net应用程序(在IIS 7上运行)相同的服务器上。我需要让所有应用程序都在端口80上运行,所以我不能只在不同的端口上安装两个web服务器

java应用程序非常简单,只有几个Serverlet(没有JSP),其功能非常接近“Hello World”。所以我希望servlet引擎尽可能轻量级。我认为Tomcat对此过于夸张。 这样的产品存在吗?或者我被Tomcat困住了?

看看。它可以从标准的主调用调用,并且可以很好地处理servlet容器(例如,GWT调试托管在Jetty环境中)

我用它来调试Lift应用程序,印象非常深刻


要通过IIS将请求转发到Jetty,您可以尝试。问题在于,IIS和Java/JSP不仅可以工作,因为IIS需要附加组件来支持VM的加载和JSP/Java内容的反射。关于如何实现这一点,有一篇很好的文章。

我确信您不想太过异国情调,但如果您没有找到自己喜欢的东西,您可以始终在不同的端口上运行Tomcat,然后执行一些反向代理,并将所有内容发送到特定的上下文中,然后在端口XYZ上运行Tomcat安装,尽管我承认我只在Apache世界熟悉这个,而不是IIS世界。

看看JK,它有一个Apache模块,我想它也有一个IIS模块来连接Tomcat(可能是Jetty,我不知道)。这将允许您在其他端口(甚至在其他主机上)的Tomcat上运行应用程序,并通过IIS访问它


如果使用Java 6,则内置HTTP服务器


当然,如果您关心可移植性,这将不是一个好的解决方案。

使用java版本6或更高版本附带的HTTP服务器。直接代码。 如上所述,REST可以使用Servlet技术实现。我们无法对两者进行比较

Servelet是一个适配器(Java),它将http请求转换为Java对象,并在请求到达时触发一个方法(doGet/doPost),并按照Java中的编程说明发送http响应

        public class server {
    public static void main(String[] args) throws Exception {
        //Start server
        HttpServer server = HttpServer.create(new InetSocketAddress(8000, 0);
        server.createContext("/monitor", new MyHandler());
        server.createContext("/usage", new MyHandler());
        server.setExecutor(java.util.concurrent.Executors.newCachedThreadPool()); //Uses New Thread every time
        server.start();
        System.out.println("Server Started at 8000...");
    }

    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange t) throws IOException {
            URI uri = t.getRequestURI();
            String path = uri.getPath();
            InputStreamReader isr = new InputStreamReader(t.getRequestBody(), StandardCharsets.UTF_8);
            BufferedReader br = new BufferedReader(isr);
            int b;
            StringBuilder buf = new StringBuilder(512);
            while ((b = br.read()) != -1) {
                buf.append((char) b);
            }
            br.close();
            isr.close();
            JSONObject body = null;
            try {
                body = new JSONObject(buf.toString());
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }           
            if (path.equals("/monitor")) {
                //your Logic
                //Use any other Library - I use GSON
                Gson gson = new Gson();
                String json = gson.toJson(POJO_OBJECT);
                t.getResponseHeaders().set("Content-Type", "application/json");
                t.getResponseHeaders().set("Access-Control-Allow-Origin", "*");
                t.getResponseHeaders().set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                t.sendResponseHeaders(200, json.length());
                OutputStream os = t.getResponseBody();
                os.write(json.getBytes());
                os.close();
            }
            if (path.equals("/monitor")) {
                //Your Logic
                //Use any other Library - I use GSON
                Gson gson = new Gson();
                String json = gson.toJson(POJO_OBJECT);
                //System.out.println(json);
                t.getResponseHeaders().set("Content-Type", "application/json");
                t.getResponseHeaders().set("Access-Control-Allow-Origin", "*");
                t.getResponseHeaders().set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                t.sendResponseHeaders(200, json.length());
                OutputStream os = t.getResponseBody();
                os.write(json.getBytes());
                os.close();
            }
        }
    }
}

谢谢你的快速回答!是的,Jetty是不错的产品。我在开发java应用程序时也在本地使用它。但它与IIS的集成程度如何?这与Tomcat的程序相同吗?还是像我怀疑的那样,情况更糟?您或其他人是否测试过,结果良好?(在这样的设置中是否可能获得良好的结果?)