例: セキュリティーを使用可能にしてシン・クライアントを実行
WebSphere® Application Server インスタンスでセキュリティーを使用可能にした場合、Java™ シン・アプリケーション・クライアントでは、セキュリティー・プロバイダーを設定するための追加コードが必要なくなります。マイグレーションおよび互換性の問題を防ぐために、IBM i Java シン・クライアントで検出されたこのコードを除去する必要があります。プロパティー・ディレクトリーの WebSphere インスタンスからの java.security ファイルは、現在セキュリティー・プロバイダーを構成するために使用されています。
セキュリティー・プロバイダーが、main() メソッドでプログラマチックに設定され、エンタープライズ Bean にアクセスしたコードの前に置かれました。
import java.security.*;
...
if (System.getProperty("os.name").equals("OS/400")) {
// Set the default provider list first.
Provider jceProv = null;
Provider jsseProv = null;
Provider sunProv = null;
// Allow for when the Provider is not needed, when
// it is not in the client application's classpath.
try {
jceProv = new com.ibm.crypto.provider.IBMJCE();
}
catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Unable to acquire provider.");
}
try {
jsseProv = new com.ibm.jsse.JSSEProvider();
}
catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Unable to acquire provider.");
}
try {
sunProv = new sun.security.provider.Sun();
}
catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Unable to acquire provider.");
}
// Enable providers early and ahead of other providers
// for consistent performance and function.
if ( (null != sunProv) && (1 != Security.insertProviderAt(sunProv, 1)) ) {
Security.removeProvider(sunProv.getName());
Security.insertProviderAt(sunProv, 1);
}
if ( (null != jceProv) && (2 != Security.insertProviderAt(jceProv, 2)) ) {
Security.removeProvider(jceProv.getName());
Security.insertProviderAt(jceProv, 2);
}
if ( (null != jsseProv) && (3 != Security.insertProviderAt(jsseProv, 3)) ) {
Security.removeProvider(jsseProv.getName());
Security.insertProviderAt(jsseProv, 3);
}
// Adjust default ordering based on admin/startstd properties file.
// Maximum allowed in property file is 20.
String provName;
Class provClass;
Object provObj = null;
for (int i = 0; i < 21; i++) {
provName = System.getProperty("os400.security.provider."+ i);
if (null != provName) {
try {
provClass = Class.forName(provName);
provObj = provClass.newInstance();
}
catch (Exception ex) {
// provider not found
continue;
}
if (i != Security.insertProviderAt((Provider) provObj, i)) {
// index 0 adds to end of existing list
if (i != 0) {
Security.removeProvider(((Provider) provObj).getName());
Security.insertProviderAt((Provider) provObj, i);
}
}
} // end if (null != provName)
} // end for (int i = 0; i < 21; i++)
} // end if ("os.name").equals("OS/400")