WebServiceContext在Weblogic上部署的无状态Web服务中获取null

时间:2014-07-31 04:24:52

标签: java web-services weblogic12c stateless

我的JAX WS Web服务部署在weblogic服务器12上。它是一个包含war存档的ear文件。 我使用了@Resource WebServiceContext wsContxt;获得客户端IP。 当我在glassfish上部署此WAR文件时,WebServiceContext运行良好。但它似乎无法在weblogic上运行。有什么我错过了。请指教。 提前致谢, 凯文。

编辑: -

按照本网站enter link description here

中的说明重新构建ear文件后,问题解决了

但是使用WebServiceContext我只能获得客户端IP,用户名变为空。请参阅下面的代码。

MessageContext msgCtxt = wsCtxt.getMessageContext();
HttpServletRequest req = (HttpServletRequest)msgCtxt.get(MessageContext.SERVLET_REQUEST); 
String clientIP = req.getRemoteAddr(); // Working
req.getUserPrincipal().getName() // Not Working

请咨询

1 个答案:

答案 0 :(得分:0)

不知怎的,我设法得到如下的用户ID。

MessageContext msgCtxt = wsCtxt.getMessageContext();
Subject subj = SubjectAccessor.getRequesterSubject(msgCtxt);
Set set = subj.getPrincipals();
Iterator i = set.iterator();
while (i.hasNext()) {
   Principal p = (Principal) i.next();
   username = p.getName();
}