首页 > 解决方案 > JAX-RPC ServiceLifecycle 未调用 init

问题描述

我有一个使用 SOAP 请求的 JAX-RPC 的 Web 项目,我不能对其进行太多修改。与我们目前维护的另一个类似项目相比,这个项目有点过时了。

我一直在尝试通过javax.xml.rpc.server.ServiceLifecycle在我的服务端点实现类中实现来通过请求标头获取 IP 地址,就像在我们的主项目中一样。根据本教程,我应该能够获得ServletEndpointContextvia de init 方法:

public class WebServiceImpl implements ServiceLifecycle {
    @Override
    public void init(Object context) throws ServiceException {
        System.out.println("Initializing...");
        ServletEndpointContext ctx = (ServletEndpointContext) context;
    }

    @Override
    public void destroy(){
        // TODO
    }
}

但是,似乎init从未调用过该方法,因此我无法从标头中获取 IP。

我检查了我们也使用 JAX-RPC 的主项目,它们几乎相同,唯一的区别是主项目使用 Spring 并且 Service Endpoint 类ServletEndpointSupport在实现时从 Spring 扩展ServiceLifecycle

我需要进行某种配置才能使其正常工作吗?

我尝试使用教程中所述的过滤器,它似乎正在工作,但是我需要能够将该 IP 发送到我的班级,而不仅仅是打印它。

其他详情:

标签: javaweb-servicesjakarta-eewebspherejax-rpc

解决方案


推荐阅读