JBoss WS Temp файл сохранен неправильно - PullRequest
0 голосов
/ 07 февраля 2012

Моя проблема со вчерашнего дня , скажем, отсортирована.Не решена, хотя.

NPE, который я имел, был вызван FileNotFoundException, который был скрыт, пока я не переключился на ведение журнала TRACE (org.jboss.util.xml.JBossEntityResolver) ...

Так что здесьвот что:
1.) Я пытаюсь подключиться к веб-сервису из кода, развернутого в JBoss
2.) 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

Очевидно, что он усекается и затем не может читать обратно.

IДумаю, я мог бы каким-то образом настроить шаблон, как он записывает его на диск или как он читает его обратно, но я нашел решение (даже не из кода класса 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.) Но если он будет сохранен правильно, это не будет проблемой.

Так что я все еще ищу способ настроить это.

1 Ответ

1 голос
/ 07 февраля 2012

никогда не сталкивался с этой проблемой, поэтому мой ответ может вам не сильно помочь. Вы пытались установить для свойства jboss.server.temp.dir что-то вроде / tmp и снова запустить тестовый пример?Может быть некоторая жестко заданная длина, и попытка сократить путь может решить проблему ... Другой способ - настроить службу .sar Jboss, запрашивающую ваш wsdl, и опубликовать их через JNDI, чтобы избежать всех проблем с путем с точки зрения клиента.?Вам просто нужно обработать поток и поместить его в дерево JNDI .. путь не указан

Если ваша проблема возникает, когда JBoss сохраняет файл , поэтому его сохранение не решит вашу проблему. 'не так ли?Вот почему я предлагаю взять wsdl в виде потока (или текста, используя Reader или InputStream, как вы предпочитаете) и поместить его прямо в дерево JNDI .... HTH Jerome

...