powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / тестирование web service and maven
16 сообщений из 16, страница 1 из 1
тестирование web service and maven
    #37926367
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем

есть вебсервис (совершенно сторонний) есть приложение наше, откуда дергается этот вебсервис. Классы нагенерены wsimport. Приложение под управлением weblogic. Собирается все мавеном. В приложении веб сервис вызывается и отрабатывает.
Написал простой Unit test использующий те же самые классы. И началось....

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.2.7</version>
            <scope>test</scope>
        </dependency>


ошибка:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Time elapsed: 0.351 sec  <<< ERROR!
java.lang.NoClassDefFoundError: com/bea/xml/XmlException
	at weblogic.wsee.policy.framework.PolicyAssertionFactory.registerAssertion(PolicyAssertionFactory.java:31)
	at weblogic.wsee.reliability.policy.ReliabilityPolicyAssertionsFactory.<clinit>(ReliabilityPolicyAssertionsFactory.java:41)
	at weblogic.wsee.policy.deployment.ProviderRegistry.<init>(ProviderRegistry.java:42)
	at weblogic.wsee.policy.deployment.ProviderRegistry.<clinit>(ProviderRegistry.java:35)
	at weblogic.wsee.jaxws.framework.policy.WSDLParserExtension.start(WSDLParserExtension.java:367)
	at com.sun.xml.ws.wsdl.parser.DelegatingParserExtension.start(DelegatingParserExtension.java:63)
	at com.sun.xml.ws.wsdl.parser.WSDLParserExtensionFacade.start(WSDLParserExtensionFacade.java:80)
	at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:231)
	at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:192)
	at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:161)
	at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:328)
	at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:290)
	at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:217)
	at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:199)
	at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:195)
	at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:112)
	at javax.xml.ws.Service.<init>(Service.java:56)
....


спрашивается а причем здесь вообще weblogic ???? Зависимости от него конечно есть, но они provided...
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926378
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarev,

provided это значит "уже есть в рантайме" (т.е. в контейнере). А там где тест выполняется, видимо нет.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926393
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

спрашивается почему и откуда подхватываются weblogic либы на этапе test ???
когда есть jaxws-rt или может кроме jaxws-rt надо еще что-то подписать ?
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926406
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarevспрашивается почему и откуда подхватываются weblogic либы на этапе test ???
когда есть jaxws-rt или может кроме jaxws-rt надо еще что-то подписать ?
Классы weblogic где-то себя зарегали. Возьмите любой класс указаный в stacktrace и в рантайме посмотрите откуда он загрузился.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926495
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

если я правильно понял то сделать вот так например:
Код: java
1.
System.out.println(weblogic.wsee.policy.framework.PolicyAssertionFactory.class.getProtectionDomain().getCodeSource().getLocation().toString());


в случае обычной работы приложения берет privided, т.е.
Код: java
1.
file:/C:/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar


в случае теста берет из мавен репозитория
Код: java
1.
file:/C:/Users/myusername/.m2/repository/oracle/weblogic/weblogic/10.3.5/weblogic-10.3.5.jar


а вывода сделать отсюда не могу...
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926509
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.ws/jaxws-rt/2.1.4/com/sun/xml/ws/wsdl/parser/DelegatingParserExtension.java
http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.ws/jaxws-rt/2.1.4/com/sun/xml/ws/api/wsdl/parser/WSDLParserExtension.java#WSDLParserExtension
http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.ws/jaxws-rt/2.1.4/com/sun/xml/ws/wsdl/parser/WSDLParserExtensionFacade.java

Из этих исходников видно, что в JAX-WS предусмотрен некий механизм расширений, который могут что-то делать с контентом WSDL. Регистрируются они в WSDLParserExtensionFacade. Отсюда и надо плясать.
Просто поройтесь в джарниках вашего апп сервера, найдите там недостающий класс, и подложите его в classpath тестов.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926516
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучше было проверить вот этот класс
weblogic.wsee.jaxws.framework.policy.WSDLParserExtension
А ещё найти в каком архиве живет
com/bea/xml/XmlException
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926559
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

для weblogic.wsee.jaxws.framework.policy.WSDLParserExtension
берется из тех же мест

com/bea/xml/XmlException
живет в c:\Oracle\Middleware\modules\com.bea.core.xml.beaxmlbeans_2.2.0.0_2-5-1.jar

что делать дальше - не пойму...
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926597
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишут что xmlbeans можно из мавена стянуть. Поищите.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926631
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael PonomarevBlazkowicz,
для weblogic.wsee.jaxws.framework.policy.WSDLParserExtension
берется из тех же мест
com/bea/xml/XmlException
живет в c:\Oracle\Middleware\modules\com.bea.core.xml.beaxmlbeans_2.2.0.0_2-5-1.jar
что делать дальше - не пойму...Ну смотрите, ваши тесты видят вот этот класс: weblogic.wsee.policy.framework.PolicyAssertionFactory
Но не видят вот этот: com.bea.xml.XmlException

Поэтому попробуйте сделать следующее:
1) Поймите откуда к вам попадает класс PolicyAssertionFactory - где валяется этот джарник? Если вы запускаете тесты вне контейнера, то он скорее всего зарегистрирован где-то либо в репозитории Maven, либо в его classpath.
2) Когда разберетесь, подложите таким же образом джарник, который содержит XmlException. То есть этот джарник надо будет либо зарегистрировать через Maven в его репозитории, и подложить со скоупом test, либо же просто добавить его в classpath.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926670
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomMichael PonomarevBlazkowicz,
для weblogic.wsee.jaxws.framework.policy.WSDLParserExtension
берется из тех же мест
com/bea/xml/XmlException
живет в c:\Oracle\Middleware\modules\com.bea.core.xml.beaxmlbeans_2.2.0.0_2-5-1.jar
что делать дальше - не пойму...Ну смотрите, ваши тесты видят вот этот класс: weblogic.wsee.policy.framework.PolicyAssertionFactory
Но не видят вот этот: com.bea.xml.XmlException

Поэтому попробуйте сделать следующее:
1) Поймите откуда к вам попадает класс PolicyAssertionFactory - где валяется этот джарник? Если вы запускаете тесты вне контейнера, то он скорее всего зарегистрирован где-то либо в репозитории Maven, либо в его classpath.
2) Когда разберетесь, подложите таким же образом джарник, который содержит XmlException. То есть этот джарник надо будет либо зарегистрировать через Maven в его репозитории, и подложить со скоупом test, либо же просто добавить его в classpath.

Michael PonomarevBlazkowicz,
Код: java
1.
System.out.println(weblogic.wsee.policy.framework.PolicyAssertionFactory.class.getProtectionDomain().getCodeSource().getLocation().toString());


в случае обычной работы приложения берет privided, т.е.
Код: java
1.
file:/C:/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar


в случае теста берет из мавен репозитория
Код: java
1.
file:/C:/Users/myusername/.m2/repository/oracle/weblogic/weblogic/10.3.5/weblogic-10.3.5.jar




Вот я закоммичу код с моими подложенными jar (в м2-репозиторий либо в cp), а что будут делать другие разработчики ?
И все-таки я не понимаю как цепляются библиотеки вебложджика? про механизм extension видел, физически откуда код узнает о существовании либ веблоджика, делает фуллскан m2_home ?
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926690
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarev ,
Ну ок, то есть у вас в репозитории уже лежит одна либа web logic. Естественно, она имеет определнные зависимости на другие джарники, а их у вас нет ни в репозитории, ни в pom.xml. Вот и источник проблемы. Зрегистрируйте недостающие джарники в maven, потом подправьте pom.xml, и все заработает.

Что делать другим разработчикам - кладете необходимый джарник в SVN вместо со скриптом по его установке. Все.

Если хотите понять когда загружается определнный класс - подключитесь дебаггером и поставьте class load breakpoint.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926752
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarevспрашивается а причем здесь вообще weblogic ???? Зависимости от него конечно есть, но они provided...

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
provided
This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath , and is not transitive.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926768
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,

блин, с runtime перепутал, спасибо

схожая проблема
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926840
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarev,

runtime тоже кладет в test classpath. Они все кладут, за исключением system. Так что лучше проблему правильно разрулить.
...
Рейтинг: 0 / 0
тестирование web service and maven
    #37926912
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,

спасибо всем, нашел таки во внутреннем artifactory нужную либу
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / тестирование web service and maven
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]