我昨天的问题是排序的。虽然没有解决。
我的 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.) 但如果保存得当,它不会有问题。
所以我仍在寻找一种配置它的方法。