使用基于 SOAP 的 Web 服务的 Eclipse MicroProfile Metrics
Eclipse MicroProfile Metrics with SOAP-based web services
是否可以在 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!";
}
}
@Counted
和 @Timed
是方法拦截器,仅适用于 CDI bean。 @公制
注入指标对象并在支持注入的地方工作,包括 Servlet 和 Web 服务。
在 Payara Server 中,Web 服务对象默认实现为 servlet。 Servlet 可以注入 CDI bean,但它们本身不是 CDI bean,CDI 拦截器对它们不起作用。
您需要将 WS 转换为 CDI bean(例如使用@RequestScoped)或 EJB (@Stateless) 以启用指标拦截器。
是否可以在 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!";
}
}
@Counted
和 @Timed
是方法拦截器,仅适用于 CDI bean。 @公制
注入指标对象并在支持注入的地方工作,包括 Servlet 和 Web 服务。
在 Payara Server 中,Web 服务对象默认实现为 servlet。 Servlet 可以注入 CDI bean,但它们本身不是 CDI bean,CDI 拦截器对它们不起作用。
您需要将 WS 转换为 CDI bean(例如使用@RequestScoped)或 EJB (@Stateless) 以启用指标拦截器。