Java applet找不到JavaPOS配置文件

时间:2012-04-03 16:17:09

标签: applet javapos

我创建了一个applet,它使用JavaPOS与用户本地系统上的支付终端进行通信。

从Eclipse IDE中运行时,applet工作正常,但在浏览器中运行时则不行。在浏览器中,applet似乎无法找到jpos / res / jpos.properties和jposxml.cfg文件。

当在applet中执行以下语句时(在start()方法中,而不是init()):

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注册表中没有加载任何条目。

我已尝试以下方法让applet“看到”这两个文件:

  1. jpos / res / jpos.properties已存在于applet引用的其中一个jar中。不过,我已将此文件添加到applet的主jar中。我也尝试将它添加到包含jar的服务器上的目录(具有正确的相对路径)。这些都不起作用。

  2. 我可以通过使用适当的值设置系统属性来解决无法找到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");
    

    但是,applet仍然无法找到jposxml.cfg。该文件存在于applet的主jar文件的根目录中。我已经尝试将服务器放在与jar相同的目录中。我也尝试创建一个单独的jar文件,只包含jposxml.cfg,但这也不起作用。我在Java控制台窗口中获得以下输出:

    [AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg
    [JposServiceLoader]manager.getEntryRegistry().load() OK
    [AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg
    

    但是JposEntries列表是空的。因此,小程序无法与支付终端通信。

  3. applet通过JNLP文件加载(以及所有必需的jars通过JNLP扩展名)。两个JNLP文件的安全性都设置为< all-permissions />。所有罐子都使用相同的证书签名。相同的代码在Eclipse中完美运行。关于问题是什么的任何想法?

2 个答案:

答案 0 :(得分:5)

这是任何面临类似问题的人的参考。

我无法获取JavaPOS代码来查看jpos.properties文件,但如上所述将值加载到系统属性中是有效的,所以我暂时坚持使用它。

要让JavaPOS从URL加载jpos.xml或jposxml.cfg,您需要设置属性jpos.config.populatorFileURL而不是jpos.config.populatorFile。这可以在jpos.properties中设置,或者作为System属性失败。

答案 1 :(得分:0)

面临同样的问题。

JposServiceLoader使用类路径查找路径的根目录。

例如,如果应用程序的本地类路径是

C:/myapp/target/classes

然后jpos.properties应该是路径

C:/myapp/target/classes/jpos/res/jpos.properties

P.S。也许这不是放置jpos文件的最佳方式,但至少你可以从解决这个问题开始。