Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с клиентом, JAX-WS + J2SE 
:(
    Опции темы
Athlon
  Дата 24.2.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.1.2006
Где: Украина:: Запорож ье

Репутация: нет
Всего: нет



Доброго времени суток.

Столкнулся с необходимостью дописать к своему приложению СОАП клиента. Имеется WSDL вэб сервиса с которым мое приложение будет взамодействовать. С помощью wsimport сгенерировал код, с помощью SoapUI создал эмулятор сторонего вэб сервиса, написал простенький тестовый пример:
Код

public static void main(String[] args) throws Exception{
    Properties props = new Properties();
    props.setProperty("log4j.rootLogger", "all, stdout");
    props.setProperty("log4j.appender.stdout", "org.apache.log4j.ConsoleAppender");
    props.setProperty("log4j.appender.stdout.layout", "org.apache.log4j.PatternLayout");
    props.setProperty("log4j.appender.stdout.layout.ConversionPattern", "%d %5p [%t] (%F:%L) - %m%n");
    props.setProperty("log4j.logger.mzp", "DEBUG");
    PropertyConfigurator.configure(props);
    
    URL url = new URL("http://192.168.2.36:8098/mockMTKSignalConsumer?WSDL");
    MTKSignalConsumer port = new MTKSignalConsumerService( url,
            SoapTransport.serviceName).getMTKSignalConsumerPort();
    try{
        port.systemActivated();
    }
    catch(Exception ex) {
        SoapTransport.logger.error("Error processing events " + ex.getMessage(), ex );
    }
}

Возникла следующая проблема - вэб сервис в SoapUI получает сообщение, а тестовый пример при отправке сообщения ругается таким вот эксепшеном:
Код

2009-02-24 10:41:11,593 ERROR [main] (SoapTransport.java:190) - Error processing events XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Premature end of file.
com.sun.xml.internal.ws.streaming.XMLStreamReaderException: XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Premature end of file.
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.wrapException(XMLStreamReaderUtil.java:242)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(XMLStreamReaderUtil.java:70)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextContent(XMLStreamReaderUtil.java:85)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextElementContent(XMLStreamReaderUtil.java:75)
    at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:167)
    at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:149)
    at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:121)
    at com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:280)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:158)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:74)
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:581)
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:540)
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:525)
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:422)
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:235)
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:120)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:230)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
    at $Proxy29.systemActivated(Unknown Source)
    at mzp.catv.cx180f.rmi.soap.SoapTransport.main(SoapTransport.java:187)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Premature end of file.
    at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:588)
    at com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter.next(XMLStreamReaderFilter.java:78)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(XMLStreamReaderUtil.java:51)
    ... 19 more

В гугле нашел что помогает "One way to fix this is to copy jaxws-api.jar and jaxb-api.jar into JRE endorsed directory, which is $JAVA_HOME/lib/endorsed", но у меня после копирования этих Jar'ов оказалось что "Provider com.sun.xml.ws.spi.ProviderImpl not found", какие еще jar'ы нада скопировать я не подобрал.

Вобщем я в полной растеряности, буду рад любой помощи.
PM MAIL ICQ   Вверх
XupyprMV
Дата 2.3.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 16.10.2006
Где: Сыктывкар, Россия

Репутация: нет
Всего: нет



Подобные ошибки получал только при попытке парсинга XML не в той кодировке (если не изменяет память пытался парсить cp1251 файл в utf8-кодировке).

Я делаю достаточно просто: генерю артефакты клиента для веб-сервиса при помощи wsimport, затем создаю инвокер используя сгенеренные классы:

Код

private URL aURL = "http://myhome/MyService?wsdl";
private QName aQName = new QName(
            "http://myservice.home.ru/", MyService");

invoker = (new MyService(aURL, aQName)).getMyEndpoint();


После этого остаётся использовать инвокер для вызова веб-методов.

Пы. Сы. Ещё помнится раньше была беда с тем что в 6-й яве некорректно работали веб-сервисы написанные под 5-й явой с использованием jaxws-api-2.1.2.jar (ибо в 6-ю версию уже встроена эта библиотека, но более ранней версии). Эту проблему я решал с использованием endorsed.

Конкретно по библиотекам, которые я изменял:

activation-2.1.2.jar       
jaxb-impl-2.1.2.jar    
jtds-1.2.jar
spring-beans-2.5.4.jar
commons-codec-1.3.jar
jaxb-xjc-2.1.2.jar
spring-core-2.5.4.jar
commons-logging-1.1.1.jar
jaxws-api-2.1.2.jar
stax-api-1.0.1.jar
FastInfoset-2.1.2.jar
jaxws-rt-2.1.2.jar
stax-ex-2.1.2.jar
jaxws-tools-2.1.2.jar
resolver-2.1.2.jar
streambuffer-2.1.2.jar
jsr173_api-2.1.2.jar 
saaj-api-2.1.2.jar
wstx-asl-3.2.0.jar
http-2.1.2.jar             
jsr181-api-2.1.2.jar   
saaj-impl-2.1.2.jar
jaxb-api-2.1.2.jar
jsr250-api-2.1.2.jar
sjsxp-2.1.2.jar

Возможно библиотеки jtds-1.2.jar, spring-core-2.5.4.jar и spring-core-2.5.4.jar тут лишние (давно было - не помню точно)
PM MAIL WWW ICQ   Вверх
Athlon
Дата 2.3.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.1.2006
Где: Украина:: Запорож ье

Репутация: нет
Всего: нет



Цитата(XupyprMV @  2.3.2009,  16:29 Найти цитируемый пост)
Я делаю достаточно просто: генерю артефакты клиента для веб-сервиса при помощи wsimport, затем создаю инвокер используя сгенеренные классы:


Так и я делаю тоже самое, все предельно просто, но почему-то работает как-то криво. Возможно есть проблема с кодировкой, но я не нашел где нужно указать веб сервису нужную мне кодировку(в WSDL указана UTF-8).

P.S. по поводу библиотек, где их все взять в одном флаконе? я скачал Java Web Services Developer Pack, но там многих нет.
PM MAIL ICQ   Вверх
XupyprMV
Дата 2.3.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 16.10.2006
Где: Сыктывкар, Россия

Репутация: нет
Всего: нет



Попробовал сам сгенерить сервис, получил вот такую вещь:

Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/home/***/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.7/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)

То есть я даже до вашей ошибки не дошёл... стало быть у вас наврятли проблемы с библиотеками... проблемы именно с парсингом...

Пробовали сгенерить клиента для другого веб-сервиса?

Возможно это вам поможет:

http://www.jroller.com/gmazza/entry/creati...oap_client_with
http://www.jroller.com/gmazza/date/20090110
http://www.jroller.com/gmazza/date/20090119



PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.