2016-05-22 1 views
0

要求を処理してビジネスロジックを実行する別のサーバーに要求をリダイレクトしたいとします。私はProxyServletを試しましたが、動作しません。ここでJetty ProxyServletは要求をリダイレクトしません

は、すべての要求を取得し、メインサーバの私の実装です:ローカルホスト上で実行されます: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> 

次また、私は私たちのカスタムプロキシサーブレットがproxyservletクラスを拡張し、rewriteURLを(上書きするために必要されるべきであると読む)method.Butとき、私として私は桟橋のプロキシをインポートしましたそれは私にコンパイルエラーを与えたことを試みた。
誰でも私にこれを解決する方法を教えてください。私は桟橋を使用しています9.3

答えて

2

こんにちは、私はこれも先日働く方法を考えていた。私は、次のinitパラメータでサブタイプ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経由のダウンストリームサービスへのプロキシをサポートしていないことにも注意してください。

+0

@Déboraそれは正しいです、申し訳ありません、私はその部分を省いた!たぶん私はコードを十分に掘り下げていないかもしれませんが、ベース 'ProxyServlet'が抽象的なものではない理由はわかりません。 –

+0

@Débora私はかなり確信していますプロジェクトと同じバージョンの 'jetty-proxy'をインポートしました。あなたはそれをインポートしましたか?クラスが見つからなかった場合、実行時にどのように動作するのか分かりません。 –

+0

@Déborayup、それは良いと思う、それは最新の安定だと思うし、私もそれを使用しています。 POMに 'jetty-server'、' jetty-servlet'と 'jetty-proxy'依存関係があり、サーブレットを追加するのに' ServletContextHandler'を使っています。サーブレットと一緒に桟橋を埋め込むことに関する文書を見てください –

関連する問題