Java アプリケーション ( J2SE ) を開発しています。私のアプリケーションでは、( Weblogic の JDNI を使用して) キュー経由でメッセージを送信し、( URLConnection を使用して) HTTP Web URL と対話する必要があります。
URLConnection を使用して HTTP Web と対話しようとすると、成功します。ただし、メッセージがキューによって送信された後、(URLConnection を使用した) HTTP Web との対話は常に失敗します。ソースコードを大幅に削減した結果、最終的にJDNIを設定するコードがUrlConnectionオブジェクトの作成に影響を与えていることがわかりました。
以下は説明用のソースコードです。
private void test() throws IOException, NamingExcpetion {
HttpUrlConnection c1 = getConnection();
System.out.println(c1);
initContext();
HttpUrlConnection c2 = getConnection();
System.out.println(c2);
}
public void initContext() throws ... {
Properties prop = new Properties();
Prop.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
Prop.put(Context.PROVIDER_URL, "t3://111.111.111.111:7100"); // my target weblogic server having queues.
new InitialContext(prop);
System.out.println("InitialContext() finished!!");
}
public HttpURLConnection getConnection() throws .... {
URL url = new URL("http://222.222.222.222:8100/login"); // My target server to be interacting via URLConnection; I'm using java.net.URL
return (HttpURLConnection) url.openConnection();
}
And below is the result.
sun.net.www.protocol.http.HttpURLConnection:http://222.222.222.222:8100/login
InitialContext() finished!!
weblogic.net.http.SOAPHttpURLConnection:http://222.222.222.222:8100/login
InitialContext() メソッドの呼び出しが終了しても HttpURLConnection が返されることを期待していますが、実際には url.openConnction(); によって SOAPHttpURLConnection が返されています。そのため、それを使用して Web ページとやり取りすることはできません。
SOAPHttpURLConnection が返されたのはなぜですか?? どうすればこの問題を解決できますか??