axis2服务端IP地址校验一般有两个方式:
一种是继承org.apache.axis2.transport.http.AxisServlet类,在子类中重写createMessageContext方法。
第二种使用org.apache.axis2.context.MessageContext类
通过如下代码片段,可知道MessageContext实例保存在ThreadLocal中
/**
* A place to store the current MessageContext
*/
public static ThreadLocal<MessageContext> currentMessageContext = new ThreadLocal<MessageContext>();
public static MessageContext getCurrentMessageContext() {
return (MessageContext) currentMessageContext.get();
}
public static void destroyCurrentMessageContext() {
currentMessageContext.remove();
}
public static void setCurrentMessageContext(MessageContext ctx) {
currentMessageContext.set(ctx);
}
所以直接在代码获取当前请求的上下文环境,在上下文环境中,得到请求的相关信息。
MessageContext messageContext = MessageContext.getCurrentMessageContext();
String ip = (String) messageContext.getProperty("REMOTE_ADDR");