0

昨天的问题是排序的。虽然没有解决。

我的 NPE 是由一个隐藏的 FileNotFoundException 触发的,直到我切换到 TRACE 日志记录(org.jboss.util.xml.JBossEntityResolver)......

所以事情是这样的:
1.)我正在尝试从部署到 JBoss
2 下的代码连接到 web 服务。)JBossWs 将 wsdl 保存到tmp文件夹,如下所示:

file:/home/xxx/dev/XXXX/jboss-4.2.3.GA/server/yyy/tmp/jbossws/JBossWS_www.company.xx_99_server_soap.php?wsdl=get8489235369016302536.xsd

3.) 然后当它尝试回读 WSDL 时:

TRACE [org.jboss.util.xml.JBossEntityResolver] Failed to obtain URL.InputStream from systemId: file:/home/xxx/dev/xxx-PAN/jboss-4.2.3.GA/server/xxxxxxx/tmp/jbossws/JBossWS_www.comany.xx_99_server_soap.php?wsdl=get8489235369016302536.xsd
java.io.FileNotFoundException: /home/xxx/dev/xxx-PAN/jboss-4.2.3.GA/server/xxxxxxx/tmp/jbossws/JBossWS_www.comany.xx_99_server_soap.php

显然它会被截断,然后无法回读。

我想我能够以某种方式配置它如何将其写入磁盘或如何读取它的模式,但我确实找到了解决方案(即使不是来自我提到的 JBoss 类的代码)。任何想法,将不胜感激。

编辑:

我在 Linux 服务器上创建了一个简单的测试应用程序,指向包含以下代码的同一文件:

URL url = new URL("file:/home/abos/xxx/xxxx/jboss-4.2.3.GA/server/xxxxxxx/tmp/jbossws/JBossWS_www.company.xx_99_server_soap.php?wsdl=get8489235369016302536.xsd");
    url.openStream();

Exception in thread "main" java.io.FileNotFoundException: /home/xxx/dev/xxxx/jboss-4.2.3.GA/server/anchorage/tmp/jbossws/JBossWS_www.bdmglobal.xx_99_server_soap.php (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:120)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
    at java.net.URL.openStream(URL.java:1010)
    at Main.main(Main.java:11)

所以这是我的结论:
1.) 实际上是 URL 类截断了名称
2.) 但如果保存得当,它不会有问题。

所以我仍在寻找一种配置它的方法。

4

1 回答 1

1

从来没有见过这个问题,所以我的回答可能对你没有多大帮助......你是否尝试将 jboss.server.temp.dir 属性设置为 /tmp 之类的东西并再次运行你的测试用例?可能有一些硬编码的长度,尝试缩短路径可能会解决问题......另一个技巧是设置一个 .sar Jboss 服务,请求您的 wsdl 并通过 JNDI 发布它们,以避免从客户端的角度来看路径 f 的所有问题? 您只需要处理一个流并将其放入 JNDI 树中 .. 不涉及路径

如果 JBoss保存文件时出现问题,那么不保存文件可以解决您的问题,不是吗?这就是为什么我建议将 wsdl 作为流(或根据您的喜好使用 Reader 或 InputStream 的文本)并将其直接放入您的 JNDI 树中的原因...... HTH Jerome

于 2012-02-07T10:53:14.487 回答