关于CXF获取IP的方法
参照网上一般是@Resource
private WebServiceContext wsContext;
MessageContext ctx = context.getMessageContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(AbstractHTTPDestination.HTTP_REQUEST);
即可
在soap这种webservice我测试没有问题
但是当rest这种的时候MessageContext ctx = context.getMessageContext();得到的是null
不知道有没有能帮我解决的大侠 谢谢 --------------------编程问答-------------------- 代码
--------------------编程问答-------------------- import java.util.Date;
@Path("/service")
//@Produces("application/xml")
public class Service {
@Context
private WebServiceContext context;
@POST
@Path("/post/")
public String postRequest(String beanString){
System.out.println(this.getClientIpCxf());
return “”;
}
//获取ip方法
private String getClientIpCxf() {
MessageContext ctx = context.getMessageContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(AbstractHTTPDestination.HTTP_REQUEST);
return request.getRemoteAddr();
}
}
import javax.annotation.Resource;
import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import org.apache.cxf.message.Message;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@WebService
public class SendSMSImpl implements SendSMS{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Resource
private WebServiceContext context;
@Override
public ResultObj sendSMSInfo(String username, String password,
String smsContent, String sendStartDt,
String sendEndDt, String spName, String businessId,
String streamNo) {
String ip = getIp();
return obj;
}
public String getIp(){
try{
MessageContext ctx = context.getMessageContext();
HttpServletRequest request = (HttpServletRequest)
ctx.get(AbstractHTTPDestination.HTTP_REQUEST);
String ip=request.getRemoteAddr();
return ip ;
} catch(Exception e){
return "获取ip失败" ;
}
}
} --------------------编程问答-------------------- 楼上那个是soap的webservice 这个我上面说过测试过 是对的,但是现在我需要的是这种针对post消息过来时候去得IP的 不知道有没有样例?或者方法? --------------------编程问答-------------------- import org.apache.cxf.jaxrs.ext.MessageContext;
import javax.ws.rs.core.Context;
@Context
private MessageContext messgeContext;
HttpServletRequest request = messgeContext.getHttpServletRequest();
request.getRemoteAddr();
自问自答一下吧。注意一下引入的类 和3楼给出的例子那个是不同的,这种适用于restful的cxf开发的。
前5个留言的给分 散分。 --------------------编程问答-------------------- http://cxf.apache.org/docs/webservicecontext.html
你是怎么写的?
LZ看一下这个http://www.oschina.net/question/158246_45413
我不太清楚
--------------------编程问答-------------------- 2楼正解~~ --------------------编程问答-------------------- https://linchunyu.info/81/cxf_fetch_request_ip.html
补充:Java , Web 开发