Apache CXF不同的ClassLoader问题

时间:2018-02-20 10:54:00

标签: soap cxf classloader

我正在构建SOAP WebService。 在这个SOAP Web服务中,我想将XML请求保存到文件中。

要做到这一点,我知道我可以简单地使用链式处理程序,但是,我需要在请求本身中不传输的其他信息,而是在WebService中计算,这就是为什么我觉得我应该在我的WebService中检索MessageContext。

希望我可以使用@Resource获取WebServiceContext并检索Message Context。但是,我似乎无法将MessageContext转换为我想要的类。这是我的终端的代码:

import org.apache.cxf.jaxws.context.WrappedMessageContext;
[...]
public MyClass [...] {
[...]
    @Resource
    WebServiceContext wsContext;

    public WSResponse lister(SecurityInfo security, MessageId messageID, RequestBody body) { 
        if(wsContext.getMessageContext() instanceof WrappedMessageContext) { 
            //The code never goes in this
        }
        //However this : 
        wsContext.getMessageContext().getClass().toString(); //equals this : "org.apache.cxf.jaxws.context.WrappedMessageContext"
        //And this is where the problem is
        wsContext.getMessageContext().getClass().getClassLoader().toString(); // is : ModuleClassLoader for Module "org.apache.cxf.impl:main" [...]
        this.getClass().getClassLoader().toString(); // is : ModuleClassLoader for Module "deployment.my_ws_module.war:main" [...]
}

我5天前甚至都不知道CXF,并且昨天发现了类加载器,但我想我有点理解为什么会发生这种情况,但是,当谈到解决它时,我很无能为力。 ..

值得注意的是: 该项目使用Maven,Spring,CXF和Java 1.8

0 个答案:

没有答案