2011-02-09 15 views
4

こんにちは 私たちはJ2EEでアプリケーションを作成し始めました。 Webサービスを作成し、Glassfishサーバーに配備しました。私たちは(唯一のhttpsポートがそのサーバーに開いている)https://our.server.com/webservice-war経由でアクセスするためのApacheのプロキシルールを書かれている:Apache HTTPサーバーの背後にあるGlassfish Server Webservice

ProxyRequests Off 
ProxyPass /webservice-war http://our.server.com:8080/webservice-war 
ProxyPassReverse /webservice-war http://our.server.com:8080/webservice-war 

今、すべてがうまく動作しますが、 http://our.server.com:8080/webservice-war/HostaliasSearchImplService?wsdl

:我々は(自動的に生成された)ServiceEndpointページにに行くとWSDLページへのリンクがありますそれはひどく間違っています(Glassfishはポート8080を聞きます)。

https://our.server.com/webservice-war/HostaliasSearchImplService?wsdl:ともHTTPSが、私は自動的に生成されたリンクであることを、それを修正することができますどのように

誰でもアイデアをhttpに変更されました

BR、ルネ

答えて

2

を追加します!

Anonymは私にmod_jkについての良いヒントを与えました。ここではRHEL5の完全な設定です。 http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/

modulesディレクトリに中に入れての/ etc/httpdの/モジュールを、それがexecuteableます:すべての

まずApache用のmod_jkモジュールをダウンロード

chmod +x mod_jk-1.2.31-httpd-2.2.x.so 

それが作成した後の/ etc/httpdの/ conf/workers。プロパティ:

# Define 1 real worker using ajp13 
worker.list=worker1 
# Set properties for worker1 (ajp13) 
worker.worker1.type=ajp13 
worker.worker1.host=localhost 
worker.worker1.port=8009 

ポート8009は、Glassfish jkコネクタがリッスンする場所です(これについては後で説明します)。

ありませんが、我々はそのためのファイルを作成し、mod_jkの設定する必要があります。

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so 
JkWorkersFile /etc/httpd/conf/workers.properties 
# Where to put jk logs 
JkLogFile /var/log/httpd/mod_jk.log 
# Set the jk log level [debug/error/info] 
JkLogLevel debug 
# Select the log format 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 
# JkOptions indicate to send SSL KEY SIZE, 
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
# JkRequestLogFormat set the request format 
JkRequestLogFormat "%w %V %T" 
# Send everything for context /atsi-war to worker named worker1 (ajp13) 
JkMount /yourapp-war/* worker1 

(これはあなたのhttp://apache.webserver.com/yourapp-war/からすべてがリダイレクトBIことを意味します:以下の内容で/etc/httpd/conf.d/mod_jk.confを

重要:Apacheで仮想ホストを使用している場合は、 JkMountCopy Onの仮想サーバー用のオプションを設定する必要があります。解明:

このディレクティブはJkMountまたは JkUnMountによって定義された でいくつかの仮想サーバ、グローバルサーバは、この仮想サーバー にコピーされます からマウント、より正確 「オン」すべてのマウントに設定されている場合。

asadmin create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server jk-connector 
asadmin set configs.config.server-config.network-config.network-listeners.network-listener.jk-connector.jk-enabled=true 

再起動Glassfishの、およびすべてsould作品:

今、私たちは、GlassFishの中にJKのコネクタを作成する必要があります。

0

HTTPSを書き換えるためとして - > HTTP、私はmod_jkの使用せずに(まだ)それが可能だか分からない、here を参照してください、だけでなく、このlittle guide

01を参照してください

一般的には、Glassfishを設定してhttp.proxyPort(http.proxyHostを設定する必要があります)を設定する必要があります。うまくいけば、それは自動生成されたWSDL URLに反映されるはずです。 Glassfishのビン/ディレクトリに

使用のasadmin(、

asadmin create-jvm-options "-Dhttp.proxyPort=80" 
asadmin create-jvm-options "-Dhttp.proxyHost=our.server.com" 

編集をdomain.xmlを実行して、下の追加:

はここでこれを行うには3種類の方法があります<java-config>要素

<jvm-options>-Dhttp.proxyPort=80</jvm-options> 
<jvm-options>-Dhttp.proxyHost=our.server.com</jvm-options> 

3. 開き、GlassFish管理Webページ、アプリケーションサーバーの下 - > [VM設定] - > [JVMオプションとは、解決策が見つかり、これらのオプション

http.proxyPort=80 
http.proxyHost=our.server.com 
+0

残念ながら、問題は解決しません。それでも間違ったリンク。たぶん、私はグラスフィッシュの書き換えルールを作成することができます。まだ知らない。 – reen

4

私はこの問題に対処するために非常にシンプルで洗練された方法であると考えているものを発見しました:mod_substituteを使用してください。この問題を抱えている私たちはすでにApacheを使用しており、組み込み済みでシンプルなので、私はこのアプローチが最も気に入っています。

私はApacheのconfのファイルのいずれかに以下と同様のブロックを置くと喜びを見つけました:

<Location /> 
    AddOutputFilterByType SUBSTITUTE text/xml 
    Substitute "s|http://internal:8080/foo|https://external/foo|ni" 
</Location> 
+0

+1すばらしい、ありがとう。 –

0

は、GlassFishアプリケーションサーバー3.1.2.2に

server-config.network-config.protocols.protocol.http-listener-1.http.server-name=MyHost:80 

の設定(5を構築)私に問題を解決しました。

関連する問題