Javaサーブレットのデバッグ

私はJavaで2か月間書いているという事実にもかかわらず(そうそう、これは期限です:))、リモートデバッガーを実行したことがありません。 GWTで開発する場合、これを行う必要はありません-それはどういうわけかそれ自体ですべてを行います。 :)しかし、今春が来て、私のGWTアプリケーションが開花し、サーバーに投稿してほしいと思っています。 しかし、突然、ただ働きたくなかったことが判明しました。 そして、なぜ、私は理解できません。 そのため、デバッガが必要です。



おそらくリモートデバッガーの動作原理は単純です-コンテナー(サーブレットコンテナーまたはphpインタープリターのいずれかです。Ruby、Perl、Pythonインタープリターは同じように動作すると思います)。アプリケーションの起動時に、特定のポートのリッスンを開始するか、どこかで接続しようとしたということです。



Javaマシンに強制的にデバッガーを有効にして特定のポートでハングさせるには、コマンドラインで次のパラメーターを指定する必要があります。



-Xdebug -Xrunjdwp:トランスポート= dt_socket、アドレス= 8000、サーバー= y、サスペンド= n



Tomcatが常にこれらのパラメーターで開始されるようにするには、開始スクリプトを修正する必要があります。 私の場合、それは/etc/init.d/tomcat5.5です。



修正したスクリプトを使用してTomcatを再起動した後、指定したポートに接続してデバッガーが起動したかどうかを確認できます。 私の場合、これはポート8000​​です。



telnet localhost 8000



接続できない場合は、何か間違ったことをしたことを意味します。 運がよければ、お気に入りのIDEを安全に開き、Javaマシンで動作するように設定して(今ではもっと考えてできるようになったと思います)、作業を楽しんでください。



PSデバッガーの助けを借りて、RPC応答のシリアル化の段階で問題が発信例外であることがわかりました。 翌日、それにもかかわらず、この実行( java.security.AccessControlException )が発生する理由を解明しようとして費やしました。 Tomcatは、実行されるサーブレットの権限を制限できることがわかりました。私の場合は、シリアライズ可能なオブジェクトのリフレクションへのアクセスを制限しました。 tomcatセキュリティシステムは別のトピックのトピックであると思います。



All Articles