私は実際的な問題を抱えています。問題は次のようにまとめられます。Javaのシステムプロパティをオーバーライドする方法はありますか?
私たちは、提供されたAPIを使用して外部CMS内でイベントがトリガーされたときに、何らかのタスクを実行するコンポーネント(プラグインと言う)を開発しています。彼らはいくつかのjarライブラリを提供しました。そこで私たちがやっているのは、それらが提供するインタフェースを実装することです。次に、イベントがトリガされたときに内部メソッドが呼び出されます。 (最初のイベントがトリガされたときにCMSは、クラスのインスタンスを1つだけ作成され、それはちょうど、各イベントのトリガとメソッドを実行する)次のように
機能をまとめることができ、
import com.external.ProvidedInterface;
public class MonitorProgram implements ProvidedInterface{
public void process(){
//This method is called when an event is triggered in CMS
}
}
私たちのクラスの私たちの中で「javax.net.ssl.HttpsURLConnection」(JAVA 1.5)を使用しています。しかし、HttpsURLConnectionは1.4のcom.sun.net.sslからjavax.net.sslに移行しました。しかし、それはそうです、私が言及していますCMSは、(私たちが実際に彼らの実装を知らない)我々のコードでClassCastExceptionが発生につながるこの
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
のようなものを使用しています。
私の質問ははっきりしていると思います。私たちのケースでは、VMインスタンスがCMSと私たちのプログラムでも同じです
System.setProperty("")
ので、
-Djava.protocol.handler.pkgs=
はまた、我々が使用して、それをバックに設定カント、VMパラメータを設定傾けます。
この問題を解決するにはどうすればよいですか?そしてアイデアや経験は?
を参照してください?あなたの質問ではあまり明確ではありません。 –
System.setPropertyを使用すると、プロパティがVMに設定され、CMS(外部パーティ)が誤動作する原因となります。そして、私たちは上記のクラスをCMSのインストール内に保つだけです。私たちは手動で実行するつもりはありません。 CMSは自動的にインスタンスを作成するので、VMパラメータを設定する方法はありません –
これをクリアするには、CMSで "HttpsURLConnection"を返すものを呼び出します。しかし、javax.net。*ではなく、com.sun.net.ssl。*から何かを作成しようとします。 CMSがjavax.net。*を使用するように強制すると、CMSのコードのどこかにClassCastExceptionがスローされます。そうしないと、コードにClassCastExceptionがあります。あれは正しいですか? –