具有基于SOAP的Web服务的Eclipse MicroProfile度量标准

问题描述 投票:0回答:1

在Payara Server 5.193.1上,能否将Eclipse MicroProfile Metrics与基于SOAP的Web服务一起使用? @Counted和@Timed似乎不适用于@WebService和@WebMethod?虽然,@ Metric有效。这是设计使然还是有问题?

这是我的代码:

接口:

package nl.tent.laboratory.emp.metrics;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface MyWebService {

    @WebMethod
    String sayHello();

}

实施:

package nl.tent.laboratory.emp.metrics;

import javax.ejb.Stateless;
import javax.jws.WebService;
import org.eclipse.microprofile.metrics.annotation.Counted;

@Stateless
@WebService(endpointInterface = "nl.tent.laboratory.emp.metrics.MyWebService")
public class MyWebServiceImpl implements MyWebService {

//    @Inject
//    @Metric
//    Counter counter;

    public MyWebServiceImpl() {
        super();
    }

    @Counted(name = "myCounter")
    @Override
    public String sayHello() {
//        counter.inc();
        return "Hello Marc!";
    }

}
eclipse metrics payara microprofile
1个回答
0
投票

@Counted@Timed是方法拦截器,仅在CDI bean上起作用。 @公制注入指标对象并在支持注入的地方工作,包括Servlet和Web服务。

在Payara Server中,默认情况下,Web服务对象被实现为Servlet。 Servlet可以注入CDI bean,但它们本身不是CDI bean,并且CDI拦截器无法对其进行操作。

您需要将WS转换为CDI Bean(例如,使用@RequestScoped)或EJB(@Stateless)以启用Metrics拦截器。

© www.soinside.com 2019 - 2024. All rights reserved.