注: この Java 配備ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。
com.ms.security
パッケージで ClassLoader
によって java.lang.ClassNotFoundException
がスローされるSun Java™ Runtime Environment (JRE™) を使ってブラウザ内でアプレットを実行すると、ClassLoader
によって com.ms.security
パッケージで java.lang.ClassNotFoundException
がスローされます。同じアプレットが、Microsoft Virtual Machine (VM) の下では何のエラーもなく実行されます。
Microsoft VM では、アプレットやアプリケーションの実行時にセキュリティーポリシーへアクセスするために、独自の com.ms.security
パッケージを用意しています。このパッケージは Sun JRE では使用できないため、このアプレットをブラウザ内で実行すると java.lang.ClassNotFoundException
がスローされます。
類似のクラスを使用することで、アプレットのソースを com.ms.security
パッケージから java.security
パッケージに移行します。
たとえば次のアプレットでは com.ms.security.PolicyEngine
を使用して、URL への接続前にネットワーク I/O アクセス権を表明します。
public class AssertPermissionApplet extends java.applet.Applet
{
public void init()
{
try
{
// Assert permission on network I/O
com.ms.security.PolicyEngine.assertPermission
(com.ms.security.PermissionID.NETIO);
java.net.URL url = new java.net.URL("http://randomhost/randomfile");
.....
} catch (java.net.MalformedURLException mue) {
}
catch (java.io.IOException ioe) {
}
} // init
}
Java テクノロジでは、java.security.AccessController
がパーミッションのアサーションに関して同様の機能を持ちます。次のソースコードは移行後の機能を示したものです。
public class AssertPermissionApplet extends java.applet.Applet
{
public void init()
{
try
{
// Assert permission on network I/O
java.security.AccessController.checkPermission(new java.net.SocketPermission("randomhost:80", "connect,accept"));
java.net.URL url = new java.net.URL("http://randomhost/randomfile");
.....
} catch (java.net.MalformedURLException mue) {
}
catch (java.io.IOException ioe) {
}
} // init
}
セキュリティーの詳細については、Java™ SE テクノロジの API ドキュメントを参照してください。
「セキュリティー」を参照してください。