在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.jws.WebService;
import org.eclipse.microprofile.metrics.annotation.Counted;
@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!";
}
}
答案 0 :(得分:2)
@Counted
和@Timed
是方法拦截器,仅在CDI bean上起作用。 @公制
注入指标对象并在支持注入的地方工作,包括Servlet和Web服务。
在Payara Server中,默认情况下,Web服务对象被实现为Servlet。 Servlet可以注入CDI bean,但它们本身不是CDI bean,并且CDI拦截器无法对其进行操作。
您需要将WS转换为CDI bean(例如,使用@RequestScoped)或EJB(@Stateless)才能启用Metrics拦截器。