在无状态EJB中获取客户端IP

时间:2015-11-06 10:09:00

标签: java web-services ejb stateless

我有无状态EJB WebService。

WS接口:

@Remote  
@WebService
public interface WSInterface{  
    @WebMethod  
    public String[] WSMethod(@WebParam(name="arg0") String arg0)
}

WS实施:

@WebService
@Stateless
public class WSImpl extends GenericSessionBean implements WSInterface {
    @WebMethod
    public String[] WSMethod( String arg0)
    {
        return ...;
    }
}

我需要在WSMethod中获取客户端IP。 我试图通过这种方式得到它(它适用于"常见" webservice):

@Resource  
private SessionContext ctx;  
public String[] getProperties() {  
    List propList = new ArrayList();    
    MessageContext mc = ctx.getMessageContext();  
    Iterator props = mc.getPropertyNames();  
    for (String prop = (String)props.next(); props.hasNext(); prop = (String)props.next())  
        { propList.add(prop); }  
    return propList.toArray(new String[propList.size()]);
}

但没有成功:REMOTE_ADDR中没有名称为MessageContext的媒体资源。

有没有办法在REMOTE_ADDR EJB中获取@Stateless

1 个答案:

答案 0 :(得分:0)

您是否可以尝试使用@Resource获取WebServiceContext而不是SessionContext?我现在没有适当的环境来检查它