2011-08-03 2 views
0

私のアプリケーションは、動作させるためにライセンスファイルを検証します。 javax.crypto.Cipher.getInstance( "DES"、 "SunJCE")inorderを呼び出して、ライセンスキーファイルを解読します。javax.crypto.Cipherなどのjavax.cryptoクラスをjbossでサーブレットで動作させるにはどうすればよいですか?

私はローカルに自分のアプリケーションを実行すると、すべてが正常に動作しますが、私は、JBossと私のアプリケーションをデプロイし、私は、サーブレットのライセンスファイルを検証したいポイントに到達したとき、私は次のエラーを取得する:

java.lang.SecurityException: JCE cannot authenticate the provider SunJCE 
    at javax.crypto.Cipher.getInstance(DashoA13*..) 
    at javax.crypto.Cipher.getInstance(DashoA13*..) 

私が言ったように、それはコマンドプロンプトと日食からうまく動作しますが、jbossのサーブレットとしては機能しません。誰か私は何をする必要があるか考えていますか?私は心の中で来る可能性のある問題のカップルがあります7.

として感謝

+0

あなたのjvmは何ですか? –

+0

Sun MicrosystemsのJavaバージョン1.6.0_26 – Matt

答えて

1

私のコードで何が間違っているのか分かりました。

if (SunJCEinProviders) 
{ 
Security.removeProvider("SunJCE"); 
} 

int i = Security.insertProviderAt(new com.sun.crypto.provider.SunJCE(),1); 

ので、いくつかの理由で私たちが削除されたjavas初期SunJCEプロバイダは、新しいものを追加し、この新しいものを認証することに失敗しました。以前の何らかの理由で誰かのためのコードでは、次のようでした。

1

をJDK 1.6とJBossを使用しています日/オラクルのJVMは、プロバイダのjarファイルを認証しようとすると、

クラスパスに問題があるように思われますUについてのJBoss (すなわちたUS_export_policy.jar、sunjce_provider.jar、のlocal_policy.jar ....)

  • を実行し、すべてのセキュリティのjarファイルは、JVMの<jdk_home>/jre/lib/ext下にある

    • チェックS_export_policy.jarとのlocal_policy.jarは<jdk_home>/jre/lib/securityで無制限バージョン

    • java.securityファイルをダウンロードしたようにしてください:Xは数

    • がsunJCEことを確認することであるsecurity.provider.X=com.sun.crypto.provider.SunJCEのような行を持つようにしてくださいプロバイダのjarはあなたにはありませんWEB-INF/lib

  • +0

    2つのもの: 1.)US_export_policy.jarとlocal_policy.jarに制限がないかどうかを確認するにはどうすればよいですか?私はちょうど私がそれをダウンロードしたときにJavaに付属のバージョンがあります。 2. sunJCE_provider.jarがWEB-INF/libディレクトリにない場合、次のエラーが発生します。 サーブレットwfwebserviceのServlet.service()が例外をスローしました:java.lang.ClassNotFoundException:com.sun.crypto .provider.SunJCE(サービスモジュールローダーの[module "deployment.cm.war:main"から) – Matt

    関連する問題