Spring集成CXF客户端获取HttpServletRequest,HttpServletResponse

3 篇文章 0 订阅


在Spring继承CXF中要用到request来获取IP

这里使用到切点,

<jaxws:endpoint id="myService" implementor="#myServiceImpl" address="/MyService">
	  <jaxws:inInterceptors>
      	<ref bean="clientIpInInterceptor"/>
      </jaxws:inInterceptors>
	</jaxws:endpoint>
<bean id="myServiceImpl" class="com.service.MyService" />


public class ClientIpInInterceptor extends AbstractPhaseInterceptor<Message> {
	
	public ClientIpInInterceptor() {
		super(Phase.RECEIVE);
	}

	@Override
	public void handleMessage(Message message) throws Fault {
		String result = null;
		
		try {
			HttpServletRequest request = (HttpServletRequest) message.get(
					AbstractHTTPDestination.HTTP_REQUEST);//这句可以获取到request
			String ip = StringUtils.getIpFromRequest(request);//自己写校验IP规则
			message.setContent(String.class, ip);
			
			
		} catch (Exception e) {
			e.printStackTrace();
			
		}
		
	}

}

如果想要在接口中获取到request,可以这样做

@WebService(endpointInterface = "com.service.IService")
public class MyService implements IService {

	@Resource
	private WebServiceContext context;
// MessageContext ctx = context.getMessageContext();
		// HttpServletRequest request = (HttpServletRequest) ctx
		// .get(AbstractHTTPDestination.HTTP_REQUEST);
		// HttpServletResponse response = (HttpServletResponse) ctx
		// .get(AbstractHTTPDestination.HTTP_RESPONSE);

在你的接口方法中写就能获取了,主要是
@Resource
	private WebServiceContext context;
这个是官方文档提供的


还有一个重要的就是切点中,切点有进入方法时截获在上面讲了,但是接口调用完毕后返回出去就不知道怎么获取request,网上没有说明

<bean id="OutInterceptor" class="xxxx.OutInterceptor" />

<jaxws:outFaultInterceptors>
      <ref bean="OutInterceptor"/>
      </jaxws:outFaultInterceptors>

这里就不知道怎么获取了.

public class OutInterceptor extends AbstractSoapInterceptor {
	
	private JiBXConverter wmsConverter;
	
	public OutInterceptor() {
		super(Phase.PRE_STREAM);//Phase这个类就知道怎么用.

	}

	@Override
	public void handleMessage(SoapMessage message) throws Fault {xxx}
SoapMessage 这个类就不知道怎么获取了.安装上面的方式试了一下,为null



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值