Java Web服务中Handler类的位置

时间:2013-03-19 16:54:16

标签: web-services java-ee soaphandler

我正在尝试将SOAP Handler添加到Web服务中。

在@WebService注释之后立即添加到Web服务的注释是:

@HandlerChain(file="MyHandler.xml")

Web服务与WEB-INF / classes下的服务类打包在一起,处理程序类位于WEB-INF / lib下的jar中。

例如:

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>

当我尝试部署Web服务时,我得到了MyHandler.xml中引用的处理程序类(MyHandler.class)的ClassNotFoundException。

使用Eclipse我已经能够使用eclipse中的对话框添加自己的处理程序。 Eclipse将处理程序类放在与服务类相同的位置。但我需要能够使用在jar文件中提供给我的处理程序。

Web服务正在部署到WebLogic 10.3的ear文件中

如果我需要更好地描述一些内容,请告诉我。我是Web服务和Java的新手。

感谢。

1 个答案:

答案 0 :(得分:2)

问题实际上是处理程序代码(MyHandler)在构造函数中抛出异常。 这导致WebLogic显示ClassNotFoundException。 我修复了导致构造函数抛出异常的问题,并且处理程序已被附加并正确调用。