0

java.protocol.handler を使用する Web アプリケーションを保守しています。以下を使用して値で初期化します-Djava.protocol.handler.pkgs=<my value>。問題は次のとおりです。 1. アプリをデプロイする場合。この命令(Tomcat のメイン クラスを直接参照) を 使用して、Eclipse から直接 tomcat-Djava.protocol.handler.pkgs=<my value>にアクセスし、VM 引数タブで引数を渡すと、アプリは正常に動作し、プロトコル依存の Bean が初期化されます。

2. .war ファイルを直接 Tomcat/webapps にデプロイし、Tomcat をcatalina.bat(に追加 -Djava.protocol.handler.pkgs=<my value>してJAVA_OPTS) 起動すると、次のようになりますMalformed URL supplied Exception。3. Eclipse から Tomcat を起動すると (そしてポイント 1 と同様の VM 引数を指定すると)、同じ .war が正しくデプロイされます。

私の推測では、catalina.bat と eclipse が VM パラメータを初期化する方法に違いがあると思います。または、プロジェクトの .jar をどうにかして Tomcat にアタッチする必要があるかもしれません。

ヒントをありがとう。必要な詳細を提供できます

4

2 に答える 2

0

-Djava.protocol.handler.pkgs="my.protocol" が Tomcat 6.0.x で機能することに気付きました。プロトコルの実装が Tomcat lib フォルダーにあり、戦争中ではない場合...

多分これは他の人を助ける

于 2012-07-12T08:34:58.647 に答える
0

コメントによると、詳細な情報がないと何が起こっているのかを知るのは難しいですが、これが役立つかもしれません. Tomcat は、システム プロパティのデフォルトの動作をオーバーライドするURL.setURLStreamHandlerFactory独自の を設定するために呼び出します。内部の Tomcat 機能を壊すことなく、独自のハンドラーで呼び出すことはできません。URLStreamHandlers のシステムは、確かに Java の最大の機能ではありません。URLStreamHandlerFactoryjava.protocol.handler.pkgsURL.setURLStreamHandlerFactory

独自のストリーム ハンドラーを確実に使用する唯一の方法は、それをURL コンストラクターに渡すことです。

URL url = new URL( null, "http://example.com", myURLStreamHandler );
于 2012-06-18T10:05:57.787 に答える