Расположение класса 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. Я исправил проблему, из-за которой конструктор выдавал исключение, и обработчик подключался и вызывался правильно.