Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(HttpsURLConnectionでAlready connecte)
閲覧数:1292
掲示板(HttpsURLConnectionでAlready connecte)
名前
匿名
題名 HttpsURLConnectionでAlready connecte
質問内容

質問を評価する
(0ポイント)
お世話になります、いつも参考にさせて頂いています。

HttpsURLConnectionインスタンス生成後パラメータ設定時に
「java.lang.IllegalStateException: Already connected」
が発生してしまい、困っております。
わかる方がいましたら教えて頂けないでしょうか?

最初の数回は問題なく動いていたような気がします。。
ですので恐らくうまい事コネクションがクローズできて
いない為なのではないかと思います。
※tomcatを再起動させても同じエラーとなります。

ソースは以下になります。

URL url = new URL(URL);
HttpsURLConnection  uc = (HttpsURLConnection)url.openConnection();

try {
    uc.setDoOutput(true); ← ここでエラーとなってしまいます。
    uc.setConnectTimeout(5000);
    uc.setReadTimeout(5000);

    uc.setRequestMethod("GET");
    uc.setRequestProperty("User-Agent", "Java URLConnection");
    uc.setRequestProperty("Accept-Language", "ja");

    uc.connect();
} finally {
    uc.disconnect();
}
質問日時 2013-03-26 01:00:20
名前
匿名
回答内容

回答を評価する
(0ポイント)
投稿者です。

本当は投稿時に記述するべきでしたが漏れていました、
現象はEclipse上のTomcatでデバッグ実行していた時に起こったものです。

そのままLinux上のTomcatに乗せたところ特に問題なく動いているようです。

ただ、テストが捗らないのでできれば解決したいです。

回避方法等わかる方いらっしゃいましたら教えて頂けないでしょうか?
回答日時 2013-03-26 19:05:45
名前
匿名
回答内容

回答を評価する
(0ポイント)
問題あるようには見えないなあ。
バグ踏んでるのかな?
JDKのリビジョン上げてみるのは?
回答日時 2013-03-26 21:56:47
名前
匿名
回答内容

回答を評価する
(0ポイント)
差しさわり無ければ例外のStacktraceも教えていただけま
すか
回答日時 2013-03-27 17:45:35
名前
匿名
回答内容

回答を評価する
(0ポイント)
投稿者です

お返事ありがとうございます。
すみません、JDKのリビジョンに関してはまだちょっと試せていません。

あれからいろいろ手を加えておりまして、RequestをSendする
処理をクラス化したのですが、デバッグ実行している時に、
Sendするクラスを呼び出す側にブレークポイントを設置た場合、
Sendするクラスにステップインした場合に限りエラーとなる
ようになりました。
※ステップオーバーでSendした場合はエラーにならないです

StackTraceですが、差しさわりありそうなところは伏せさせて頂きました。

--------------------------------------------
java.lang.IllegalStateException: Already connected
    at java.net.URLConnection.setDoOutput(URLConnection.java:849)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.setDoOutput(HttpsURLConnectionImpl.java:426)
    at xxxxxxxxxxxxxxxxxxxxxxxx
    at xxxxxxxxxxxxxxxxxxxxxxxx
    at xxxxxxxxxxxxxxxxxxxxxxxx
    at xxxxxxxxxxxxxxxxxxxxxxxx
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)



回答日時 2013-03-27 18:55:33
名前
匿名
回答内容

回答を評価する
(0ポイント)
あー、その基本クラス(java.net.URLConnection)ですが、一
部バージョン(ミドル)関連クラスにバグがありますよ
回答日時 2013-03-31 10:58:04
名前
匿名
回答内容

回答を評価する
(0ポイント)
返事ありがとうございます。

バグですか・・・
取り合えず本番環境では問題なく動いていますので、
OKとしました。

とりあえず調査はここまでとしたいと思います。
もし今後解決方法等見つかりましたら。
解決方法を記載させて頂きます。

みなさんご協力ありがとうございました。
回答日時 2013-04-02 15:56:20
名前
匿名
回答内容

回答を評価する
(0ポイント)
レスポンスコードが相手サーバーからのレスポンスではな
いという不具合だけど。

ちゃんと動いているバージョンでよかった
(。w。)
回答日時 2013-04-03 15:17:34

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道