public String test() {
Service srvcModel = new
ObjectServiceFactory().create(IWs_common.class);
XFireProxyFactory factory =
new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String helloWorldURL = "...";
try {
IWs_common srvc = (IWs_common)factory.create(srvcModel, helloWorldURL);
String result = srvc.getVersion();
return result;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
превосходно работает, НО я взял с веб сервиса интерфейс IWs_common.java и подключил к проджекту. А у меня не будет этого файла, будет только wsdl файл. Через программу wsdl2java я перегнал в код джавы получил два файла
...CallbackHandler.java
...Stub.java
Подскажите пожалуйста, как теперь на их основе вызвать getVersion()?
A>превосходно работает, НО я взял с веб сервиса интерфейс IWs_common.java и подключил к проджекту. А у меня не будет этого файла, будет только wsdl файл. Через программу wsdl2java я перегнал в код джавы получил два файла A>...CallbackHandler.java A>...Stub.java
A>Подскажите пожалуйста, как теперь на их основе вызвать getVersion()?
...Stub.java — это обертка для обращения к сервису. там должны быть все необходимый методы. поищи.
F>...Stub.java — это обертка для обращения к сервису. там должны быть все необходимый методы. поищи.
да, это обвёртка я уже так и понял. В нете нашёл только пример с интерфейсом, а пример с этим ...stub файлов что-то не могу найти, может у кого есть не больший пример. Что бы знать от чего опираться, а то пока понятии не имею как это всё записать.
Здравствуйте, Awejk, Вы писали:
A>в итоге получаю эксепшен
A>
A>java.lang.NoSuchMethodError: javax.xml.stream.XMLOutputFactory.newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLOutputFactory;
A> org.apache.axiom.om.util.StAXUtils.getXMLOutputFactory(StAXUtils.java:97)
A>
Axiom, который использует Axis 2, требует другую версию StAX API.
Под Geronimo, что ли пускаете? Настоятельно рекомендую отказатся от использования евойного Axis 2 вообще. Мы совсем недавно напоролись на аж две критичные для нас баги.
Делается это путем фильтрации package в geronimo-xml и подсовыванием своих либ в приложение. Таких как реализация SAAJ.
Здравствуйте, Awejk, Вы писали:
A>может можно используя другие средства как-то обратиться к сервису используя этот stub файл
Вариантов куча:
1) Использовать Java 5
2) Использовать другой сервер приложений
3) Прописать StAX API нужнойы версии в bootstrap classpath, чтобы он грузился до классов из JRE
4) Прописать в geronimo-web.xml фильтр на пакеты, положить безглючные реализации jax-ws и saaj в своё приложение.
A>>может можно используя другие средства как-то обратиться к сервису используя этот stub файл B>Вариантов куча: B>1) Использовать Java 5 B>2) Использовать другой сервер приложений B>3) Прописать StAX API нужнойы версии в bootstrap classpath, чтобы он грузился до классов из JRE B>4) Прописать в geronimo-web.xml фильтр на пакеты, положить безглючные реализации jax-ws и saaj в своё приложение.
мы ещё сидим на джаве 1.4
но по сути так и надо делать
nameFileStub stub = new nameFileStub("url...");
GetVersion param = new GetVersion();
stub.getVersion(param);
Здравствуйте, Awejk, Вы писали:
A>мы ещё сидим на джаве 1.4 A>но по сути так и надо делать
Выходит проблема не в том StAX, который в JRE, а в том что у вас на сервере 2 библиотеки StAX API разных версий. Давай список jar файлов приложения сюда
A>
A>nameFileStub stub = new nameFileStub("url...");
A>
Не уверен. Стабы вроде же через фабрику надо инстанциировать. Хотя я JAX-WS на вскидку не помню.
A>а проблема уже кроется в используемых средствах?
Причина исключения показаного выше в библиотеках. Эдакое проявление jar hell.
Здравствуйте, Awejk, Вы писали:
A>это мои jar файлы(положил всё что было в папке lib от axis):
Так я что-то сосвем потерялся. В subj у тебя написано про клиент. Хотя из исключения видно что оно на серверере. Вопрос.
Сервер Geronimo или WebSphere CE? Правильно?
Здравствуйте, Awejk, Вы писали:
B>>Сервер Geronimo или WebSphere CE? Правильно? A>oracle internet application server 10g rel 2
Надо в его либах посмотреть на наличие stax-api другой версии.
B>>Хотя из исключения видно что оно на серверере. A>а мне что-то не видно, под каким углом надо смотреть?
B>Надо в его либах посмотреть на наличие stax-api другой версии.
посмотрел его либы что-то не нашёл вообще ни одного файла связанным с именем stax
B>То есть рантайм происходит на сервере а не в standalone?
Я у себя запускаю веб сервис и конекчюсь со своего же компа к этому веб сервису