Java - богатая регистрация в веб-сервисах - PullRequest
3 голосов
/ 11 апреля 2011

У меня есть простой веб-сервис, подобный этому:

@WebService
public class MyWebService 
{
    @WebMethod
    public String ProcessQuery(@WebParam(name="query") String q)
    {
    // Logging here: User IP, etc.
    }

    public static void main(String[] args) throws Exception 
    {
    String address = "http://127.0.0.1:8023/_WebServiceDemo";
    Endpoint.publish(address, new MyWebService());
    new DocumentServer();
    System.out.println("Listening: " + address);
    }
}

Я хочу добавить метод ведения журнала для моей службы для извлечения информации.Я слышал о формате NCSA и Log4J, но я не знаю, как использовать их в сервисе.Я хочу, чтобы войти IP пользователя и другую информацию.Как я могу это сделать?

Спасибо.

Редактировать: я должен отметить, что основная часть моего вопроса заключается в том, как я могу получить некоторые данные, такие как IP-адрес пользователя, клиент и т. Д. Ввеб-метод.

1 Ответ

3 голосов
/ 11 апреля 2011

Добавьте WebServiceContext в свой класс, чтобы вы могли получить HttpServletRequest:

@WebService
public class MyWebService 
{
    @Resource
    WebServiceContext wsContext;

    @WebMethod
    public String ProcessQuery(@WebParam(name="query") String q)
    {
        MessageContext messageContext = wsContext.getMessageContext();
        HttpServletRequest request = (HttpServletRequest) messageContext.get(SOAPMessageContext.SERVLET_REQUEST);

        // now you can get anything you want from the request
    }

}
...