Расположение класса Handler в веб-сервисе Java

Я пытаюсь добавить обработчик SOAP к веб-сервису.

Аннотация, добавленная в веб-сервис сразу после аннотации @WebService:

@HandlerChain(file="MyHandler.xml")

Веб-сервис упакован с классом обслуживания в WEB-INF/classes, а класс обработчика находится в банке, расположенной в WEB-INF/lib.

Например:

WEB-INF/classes/com/.../MyService.class
WEB-INF/classes/com/.../MyServiceImpl.class
WEB-INF/classes/com/.../MyHandler.xml
.
.
.
WEB-INF/lib/JarProvidedToMe.jar  <--- Has the handler class (MyHandler.class) in it that is referenced in MyHandler.xml

MyHandler.xml (изменилось полное имя):

<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
    <handler-chain>
        <handler>
            <handler-name>com.full.path.MyHandler</handler-name>
            <handler-class>com.full.path.MyHandler</handler-class>
        </handler>
    </handler-chain>
</handler-chains>

Когда я пытаюсь развернуть веб-сервис, я получаю ClassNotFoundException для класса обработчика (MyHandler.class), на который есть ссылка в MyHandler.xml.

Используя Eclipse, я смог добавить свой собственный обработчик, используя диалоги в eclipse. Eclipse поместил класс обработчика в то же место, что и класс обслуживания. Но мне нужно иметь возможность использовать обработчик, предоставленный мне в jar-файле.

Веб-сервис развертывается в файле ear в WebLogic 10.3.

Пожалуйста, дайте мне знать, если мне нужно описать что-то лучше. Я новичок в веб-сервисах и Java.

Благодарю.

1 ответ

Решение

Проблема заключалась в том, что код обработчика (MyHandler) вызывал исключение в конструкторе. Это заставляло WebLogic отображать исключение ClassNotFoundException. Я исправил проблему, из-за которой конструктор выдавал исключение, и обработчик подключался и вызывался правильно.

Другие вопросы по тегам