Java eclipseまたはスタックトレースを注意深く読む

私はWeb開発に携わっており、私たちはプロジェクトでscalaテクノロジースタックを使用しています。このスタックの基礎は、 liftwebとも呼ばれるLiftフレームワーク ですLiftsbtを使用して、 ビルドjettyまたは別のサーブレットコンテナをWebサーバーとして制御ます。



自宅で仕事をしなければならなかったとき、それは完全に機能し、サーバーの開発バージョンが起動しました。すべてがいつも通りでした。 しかし、翌日、私がオフィスで仕事に戻ったとき、サーバーが最初に起動したとき、完全に残念でした。 Connection timed out: connect



たという例外java.net.ConnectException



Connection timed out: connect



および86行のjava.net.ConnectException



、起動直後にコンソール画面java.net.ConnectException



広く拡散していました。 残念ながら、接続を確立できなかった場所には正確に記述されていません。 サーバーは起動したばかりなので、確立しようとする唯一の接続は特定のポートでのLISTEN



です。 しかし、例外は明らかにそれについてではありません。 さらに、ポートはすでに500を超える何らかのエラーで応答しています。



適切なGoogleからそれだけ。



私はキャッシュをきれいにしてもう一度やり直すことにしました。 再び同じ例外。 さて、あなたはアイビーキャッシュをきれいにしようとする必要があります、多分ライブラリは何らかの形で壊れています。 助けにはなりませんでした。 たぶんディスクの何か? ディスクチェックでエラー(SSD)が示されませんでした。 昨日すべてが家で働いたのはどうですか?! そして昨日、そしてここで、職場で、すべてが働いた。 システムが更新されていない可能性がありますが、すでに修正されていますか? 新しいアップデートはありません。 たぶんウイルス対策やファイアウォールですか? 切断され、助けにはならなかった。 システムは、おそらく私のバージョンのjavaを完全に安全でないと見なし、そのネットワークをブロックすると考えられていました。 彼はJDKを再配置し、 念のため 、すべての古いバージョンを削除して、すべてのキャッシュを再度クリアし、システムを使用してディスクのクリーンアップを行いました。 助けにはなりませんでした。



奇妙なことに、自宅のDNSサーバーもGoogleに登録されおり、理論的には同じように動作するはずです。



そこでアドレスを検索し始めましたが、WebサーバーのパブリックディレクトリのルートにあるWEB-INF



フォルダーのweb.xml



でスキームの定義のみが見つかりました。 DTDファイルweb-app_2_3.dtd



の代替品をweb-app_2_3.dtd



で検索しましたが、実際には何も見つかりませんでした。 そして、実際には、このURLがひっくり返るとは信じられませんでした。



スキーマ定義は次のとおりです。

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">







確認する必要がある別の考え-確実に動作するラップトップを使用し、動作させて、動作中のネットワークで起動しようとすると、動作するかどうかを確認します。 確認済み。 動作しません。 同じ例外。



これはすでに興味深いです。 したがって、ローカルネットワークのせいですが、正確にどこに到達できないのかは明確ではありません。 他の開発者のマシンからプロジェクトを開始しようとしました-同じエラー。



ここで同僚は良い考えを持っていた-ネットワークなしで開始する場合はどうでしょう。 チェック-同じjava.sun.com



できないことを誓います。 この特定のドメインの問題をより詳細に研究することにしました。 しかし、彼はまったく反応しません! traceroute



を試しました-プロバイダーエリアのどこかでタイムアウトが発生します。 すべてがモバイルネットワークを通じて機能します。 つまり プロバイダまたはチャネルを彼に販売するプロバイダのどちらも、どこに行けばいいのかわかりません。



この方法で作業することは不可能です。最初は、使用可能なチャネルから必要なファイルをダウンロードし、サーバーに配置したかったのです。 しかし、後で同僚の推薦で、私は一般的にxmlファイルからスキーマ定義を削除しようとしました。 そして見よ! すべてがうまくいった、誰も誓わない。 他の誰かがそれを踏んだ場合に備えて、ここで例外のテキストを公開します。記事をグーグルで検索することで、数時間節約できます。



例外
  java.net.ConnectException:接続がタイムアウトしました:接続
         java.net.DualStackPlainSocketImpl.connect0(ネイティブメソッド)
         java.net.DualStackPlainSocketImpl.socketConnect(不明なソース)
         java.net.AbstractPlainSocketImpl.doConnect(不明なソース)
         java.net.AbstractPlainSocketImpl.connectToAddress(不明なソース)
         java.net.AbstractPlainSocketImpl.connect(不明なソース)
         java.net.PlainSocketImpl.connect(不明なソース)
         java.net.SocksSocketImpl.connect(不明なソース)
         java.net.Socket.connect(不明なソース)
         java.net.Socket.connect(不明なソース)
         sun.net.NetworkClient.doConnect(不明なソース)
         sun.net.www.http.HttpClient.openServer(不明なソース)
         sun.net.www.http.HttpClient.openServer(不明なソース)
         at sun.net.www.http.HttpClient。<init>(不明なソース)
         sun.net.www.http.HttpClient.New(不明なソース)
         sun.net.www.http.HttpClient.New(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.plainConnect0(不明なソース)
         sun.net.www.protocol.http.HttpURLConnectionで$ 6.run(不明なソース)
         sun.net.www.protocol.http.HttpURLConnectionで$ 6.run(不明なソース)
         java.security.AccessController.doPrivileged(ネイティブメソッド)
         java.security.AccessController.doPrivilegedWithCombiner(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.plainConnect(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.connect(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.getInputStream0(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.accessで$ 200(不明なソース)
         sun.net.www.protocol.http.HttpURLConnectionで$ 9.run(不明なソース)
         sun.net.www.protocol.http.HttpURLConnectionで$ 9.run(不明なソース)
         java.security.AccessController.doPrivileged(ネイティブメソッド)
         java.security.AccessController.doPrivilegedWithCombiner(不明なソース)
         sun.net.www.protocol.http.HttpURLConnection.getInputStream(不明なソース)
         com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(不明なソース)で
         com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(不明なソース)で
         com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(不明なソース)で
         com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(不明なソース)で
         com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImplで$ DTDDriver.dispatch(不明なソース)
         com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImplで$ DTDDriver.next(不明なソース)
         com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImplで$ PrologDriver.next(不明なソース)
         com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(不明なソース)で
         com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(不明なソース)で
         com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(不明なソース)で
         com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(不明なソース)で
         com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(不明なソース)で
         com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(不明なソース)で
         com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(不明なソース)で
         com.sun.org.apache.xerces.internal.jaxp.SAXParserImplで$ JAXPSAXParser.parse(不明なソース)
         com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(不明なソース)で
         org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:255)で
         org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:54)で
         org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:207)で
         org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:189)で
         org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:60)で
         org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:474)で
         org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java ∗ 10)で
         org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)で
         com.earldouglas.xsbtwebplugin.Jetty9Runner.reload(Jetty9Runner.scala:143)で
         com.earldouglas.xsbtwebplugin.Container $$ anonfun $ reloadTask $ 1 $$ anonfun $ apply $ 3.apply(Container.scala:117)
         com.earldouglas.xsbtwebplugin.Container $$ anonfun $ reloadTask $ 1 $$ anonfun $ apply $ 3.apply(Container.scala:117)
         scala.Function2 $$ anonfun $ tupled $ 1.apply(Function2.scala:54)
         scala.Function2 $$ anonfun $ tupled $ 1.apply(Function2.scala:53)
         scala.Function1 $$ anonfun $ compose $ 1.apply(Function1.scala:47)
         at sbt。$ tilde $ greater $$ anonfun $$ u2219 $ 1.apply(TypeFunctions.scala:40)
         at sbt.std.Transform $$ anon $ 4.work(System.scala:63)
         at sbt.Execute $$ anonfun $ submit $ 1 $$ anonfun $ apply $ 1.apply(Execute.scala:226)
         at sbt.Execute $$ anonfun $ submit $ 1 $$ anonfun $ apply $ 1.apply(Execute.scala:226)
         at sbt.ErrorHandling $ .wideConvert(ErrorHandling.scala:17)
         at sbt.Execute.work(Execute.scala:235)
         at sbt.Execute $$ anonfun $ submit $ 1.apply(Execute.scala:226)
         at sbt.Execute $$ anonfun $ submit $ 1.apply(Execute.scala:226)
         at sbt.ConcurrentRestrictions $$ anon $ 4 $$ anonfun $ 1.apply(ConcurrentRestrictions.scala:159)
         sbt.CompletionService $$ anon $ 2.call(CompletionService.scala:28)
         java.util.concurrent.FutureTask.runで(不明なソース)
         java.util.concurrent.Executorsで$ RunnableAdapter.call(不明なソース)
         java.util.concurrent.FutureTask.runで(不明なソース)
         java.util.concurrent.ThreadPoolExecutor.runWorker(不明なソース)
         java.util.concurrent.ThreadPoolExecutorで$ Worker.run(不明なソース)
         java.lang.Thread.run(不明なソース) 




プロバイダーもアドレスに応答するようになり、明らかに問題は解決しました。



そして、おそらく、スタックレースを慎重に研究すると、 com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity



の行に目が留まり、これが事実であることが明らかになります。 しかし、私見では、接続できなかったアドレスは例外テキストに書かなければなりません! com.sun.org



コードのパッチをどこに提出すればよいかわかりません。まだレポートを送信していません。



PS java.sun.com



現在、 www-legacy.oraclegha.com



CNAME www-legacy.oraclegha.com



。 おそらくそれは非常に遺産であるため、どういうわけかそれが理由になりました。




All Articles