Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / тестирование web service and maven / 16 сообщений из 16, страница 1 из 1
22.08.2012, 14:44:42
    #37926367
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
Привет всем

есть вебсервис (совершенно сторонний) есть приложение наше, откуда дергается этот вебсервис. Классы нагенерены 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
22.08.2012, 14:49:41
    #37926378
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
Michael Ponomarev,

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

спрашивается почему и откуда подхватываются weblogic либы на этапе test ???
когда есть jaxws-rt или может кроме jaxws-rt надо еще что-то подписать ?
...
Рейтинг: 0 / 0
22.08.2012, 15:01:24
    #37926406
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
Michael Ponomarevспрашивается почему и откуда подхватываются weblogic либы на этапе test ???
когда есть jaxws-rt или может кроме jaxws-rt надо еще что-то подписать ?
Классы weblogic где-то себя зарегали. Возьмите любой класс указаный в stacktrace и в рантайме посмотрите откуда он загрузился.
...
Рейтинг: 0 / 0
22.08.2012, 15:24:24
    #37926495
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
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
22.08.2012, 15:28:17
    #37926509
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
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
22.08.2012, 15:29:57
    #37926516
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
лучше было проверить вот этот класс
weblogic.wsee.jaxws.framework.policy.WSDLParserExtension
А ещё найти в каком архиве живет
com/bea/xml/XmlException
...
Рейтинг: 0 / 0
22.08.2012, 15:43:43
    #37926559
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
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
22.08.2012, 15:57:07
    #37926597
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
Пишут что xmlbeans можно из мавена стянуть. Поищите.
...
Рейтинг: 0 / 0
22.08.2012, 16:07:10
    #37926631
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
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
22.08.2012, 16:25:12
    #37926670
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
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
22.08.2012, 16:32:13
    #37926690
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
Michael Ponomarev ,
Ну ок, то есть у вас в репозитории уже лежит одна либа web logic. Естественно, она имеет определнные зависимости на другие джарники, а их у вас нет ни в репозитории, ни в pom.xml. Вот и источник проблемы. Зрегистрируйте недостающие джарники в maven, потом подправьте pom.xml, и все заработает.

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

Если хотите понять когда загружается определнный класс - подключитесь дебаггером и поставьте class load breakpoint.
...
Рейтинг: 0 / 0
22.08.2012, 16:58:15
    #37926752
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
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
22.08.2012, 17:07:18
    #37926768
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестирование web service and maven
Leonidv,

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

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

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

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


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