【问题标题】:Jetty ProxyServlet does not redirect the requestJetty ProxyServlet 不重定向请求
【发布时间】:2016-05-22 10:12:24
【问题描述】:

我想将请求重定向到另一个处理请求并执行业务逻辑的服务器。我尝试使用 ProxyServlet,但它不起作用。

这是我获取所有请求的主服务器的实现:在 localhost:8081 上运行

    Server server = new Server(8081);

    // 2. Creaing the WebAppContext for the created content
    WebAppContext ctx = new WebAppContext();
    ctx.setResourceBase("src/main/webapp");
    ctx.setContextPath("/jetty-jsp-example");

    ServletHolder jerseyServlet = ctx.addServlet(ProxyServlet.class,"/*");
    jerseyServlet.setInitOrder(0);

    jerseyServlet.setInitParameter("maxThreads", "1");
    jerseyServlet.setInitParameter("proxyTo", "localhost:8080");

    ctx.setAttribute("o:Prg.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",".*/[^/]*jstl.*\\.jar$");

    org.eclipse.jetty.webapp.Configuration.ClassList classlist = org.eclipse.jetty.webapp.Configuration.ClassList.setServerDefault(server);
    classlist.addAfter("org.eclipse.jetty.webapp.FragmentConfiguration", "org.eclipse.jetty.plus.webapp.EnvConfiguration", "org.eclipse.jetty.plus.webapp.PlusConfiguration");
    classlist.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration", "org.eclipse.jetty.annotations.AnnotationConfiguration");
    server.setHandler(ctx);
    server.start();
    server.join();

我想将此请求转发到在端口 8080 上运行的服务器。我的目标服务 url 路径是:localhost:8080/jetty-jsp-example/sv/endpoint。

我已经导入了如下的码头代理

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-proxy</artifactId>
<version>9.3.8.v20160314</version>

此外,我读到应该需要我们的自定义代理 servlet 来扩展 proxyservlet 类并覆盖 rewriteURL() 方法。但是当我尝试时它给了我编译错误。
任何人都可以让我如何解决这个问题。我使用码头 9.3

【问题讨论】:

    标签: java jakarta-ee jetty


    【解决方案1】:

    嘿,前几天我也在想如何让这个工作。我必须使用带有以下初始化参数的子类型BalancerServlet

    // give your servlet a name
    jerseyServlet.setName("proxy");
    // parameter is 'balancerMember.NAME.proxyTo'
    jerseyServlet.setInitParameter("balancerMember.proxy.proxyTo", "http://yourdownstreamserver.com/");
    

    关于配置的文档有点稀疏;我最终不得不查看source code。另请注意,Jetty 代理不支持通过 SSL 代理下游服务。

    【讨论】:

    • @Débora 是正确的,抱歉我省略了那部分!也许我还没有深入研究代码,但我不确定为什么基础 ProxyServlet 不是抽象的,它本身似乎并没有做太多......
    • @Débora 我很确定我将完全相同版本的jetty-proxy 导入到我的项目中;你导入了吗?如果找不到该类,我不确定它在运行时是如何工作的。
    • @Débora 是的,听起来不错,认为这是最新的稳定版,我也在使用它。我的 POM 中有 jetty-serverjetty-servletjetty-proxy 依赖项,我正在使用 ServletContextHandler 添加 servlet。查看有关使用 servlet 嵌入码头的文档
    猜你喜欢
    • 2013-03-02
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多