JavaPOSを使用してユーザーのローカルシステム上の決済端末と通信するアプレットを作成しました。
Eclipse IDE内から実行する場合、アプレットは正常に機能しますが、ブラウザーで実行する場合は機能しません。ブラウザでは、アプレットはjpos / res/jpos.propertiesファイルとjposxml.cfgファイルを見つけられないようです。
次のステートメントがアプレットで実行される場合(init()ではなくstart()メソッドで):
JposEntryRegistry registry = JposServiceLoader.getManager().getEntryRegistry();
registry.load();
これは、Javaコンソールウィンドウに表示される出力です。
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
また、JposEntryレジストリにエントリはロードされません。
アプレットに2つのファイルを「表示」させるために、次のことを試みました。
jpos / res / jpos.propertiesは、アプレットによって参照されるjarの1つにすでに存在しています。それでも、このファイルをアプレットのメインjarに追加しました。また、jarを含むサーバー上のディレクトリに(正しい相対パスで)追加してみました。これはどれも機能しません。
次のように、システムプロパティを適切な値に設定することで、jpos.propertiesが見つからないことを回避できます。
System.setProperty("jpos.loader.serviceManagerClass", "jpos.loader.simple.SimpleServiceManager"); System.setProperty("jpos.config.populatorFile", "jposxml.cfg"); System.setProperty("jpos.util.tracing.TurnOnNamedTracers", "JposServiceLoader,SimpleEntryRegistry,SimpleRegPopulator,XercesRegPopulator"); System.setProperty("jpos.util.tracing.TurnOnAllNamedTracers", "ON");
ただし、アプレットはまだjposxml.cfgを見つけることができません。このファイルは、アプレットのメインjarファイルのルートにあります。jarファイルと同じディレクトリにサーバーを配置してみました。また、jposxml.cfgのみを含む別のjarファイルを作成しようとしましたが、それも機能しません。Javaコンソールウィンドウに次の出力が表示されます。
[AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg [JposServiceLoader]manager.getEntryRegistry().load() OK [AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg
しかし、JposEntriesのリストは空です。その結果、アプレットは決済端末と通信できなくなります。
アプレットは、JNLPファイル(およびJNLP拡張機能を介して必要なすべてのjar)を介してロードされます。両方のJNLPファイルのセキュリティは<all-permissions/>に設定されています。すべてのjarファイルは同じ証明書で署名されています。同じコードがEclipseで完全に機能します。問題が何であるかについてのアイデアはありますか?