java - JAX-RPC ServiceLifecycle 未调用 init
问题描述
我有一个使用 SOAP 请求的 JAX-RPC 的 Web 项目,我不能对其进行太多修改。与我们目前维护的另一个类似项目相比,这个项目有点过时了。
我一直在尝试通过javax.xml.rpc.server.ServiceLifecycle
在我的服务端点实现类中实现来通过请求标头获取 IP 地址,就像在我们的主项目中一样。根据本教程,我应该能够获得ServletEndpointContext
via 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 发送到我的班级,而不仅仅是打印它。
其他详情:
- 该项目基于 WebSphere 7 构建,但运行在 WebSphere 8.5 服务器上
- 使用 Java 6
解决方案
推荐阅读
- ios - UITabBarController 的 TabBar 项目标题在 Xib 中不可见
- python - 在 Python 中使用 LSTM 为多元时间序列准备数据集
- sql-server - sp_send_dbmail 在电子邮件正文末尾附加(空)
- python - 如何从 SQLite 获取值进行转换?
- sql - 如何在 SQL 中实现桶值?
- database-design - 具有列的规范化具有冗余并且完全依赖于主键
- java - KStream 转 KTable
- corda - Corda 中的节点如何在 Enterprise Corda 版本中恢复数据
- python - tensorflow 的 tf.round() 值错误,因为它是一个没有梯度的操作
- android - Flutter 项目运行时显示错误无效参数:源不得为空