Java Rest Web Serviceを作成していて、呼び出し元のIPアドレスが必要です。これをCookieで一度見たと思っていましたが、今はわかりません。これを取得するための一貫した場所はありますか?情報?
「OperationalContext」を使用して取得する例を1つ見ましたが、Javaにはありませんでした。
リクエストオブジェクトを使用してIPを取得できると思います。
私が間違っていないのであれば、request.getRemoteAddr()
かそこら。
HttpServletRequest をRest Serviceに挿入します。
import javax.servlet.http.HttpServletRequest;
@GET
@Path("/yourservice")
@Produces("text/xml")
public String activate(@Context HttpServletRequest requestContext,@Context SecurityContext context){
String ipAddressRequestCameFrom = requestContext.getRemoteAddr();
//Also if security is enabled
Principal principal = context.getUserPrincipal();
String userName = principal.getName();
}
あなたはこのようなことをすることができます:
@WebService
public class YourService {
@Resource
WebServiceContext webServiceContext;
@WebMethod
public String myMethod() {
MessageContext messageContext = webServiceContext.getMessageContext();
HttpServletRequest request = (HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST);
String callerIpAddress = request.getRemoteAddr();
System.out.println("Caller IP = " + callerIpAddress);
}
}
サーブレットを使用して「Webサービス」を作成していると仮定すると、要求オブジェクトでのかなり単純なメソッド呼び出し.getRemoteAddr()
によって、呼び出し元のIPアドレスがわかります。