热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EclipseMicroProfileMetrics批注@Timed线程在Payara上安全吗?

由于@Timed批注不适用于我的基于SOAP的Web服务,因此我编写了SOAP处理程序以能够自己测

由于@Timed批注不适用于我的基于SOAP的Web服务,因此我编写了SOAP处理程序以能够自己测量Web服务的持续时间。 我想知道此解决方案是否是线程安全的。

我的SOAP处理程序的源代码:

package nl.tent.laboratory.emp.metrics;
import javax.inject.Inject;
import javax.xml.namespace.QName;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.eclipse.microprofile.metrics.MetricID;
import org.eclipse.microprofile.metrics.MetricRegistry;
import org.eclipse.microprofile.metrics.Timer;
/**
* Deze klasse klokt de web service calls.
*
* Daar de eclipse microProfile Metrics annotatie @Timed niet werkt in combinatie met de annotatie @WebService klokken we zelf.
*/
public class TimerSOAPHandler extends AbstractGenericSOAPHandler {
@Inject
MetricRegistry metricRegistry;
public TimerSOAPHandler() {
super();
}
@Override
public boolean handleMessage(SOAPMessageContext context) {
// Bij het inkomende bericht (request) wordt de tijdsmeting gestart.
if (isInbound(context)) {
startTiming(context);
}
// Bij het uitgaande bericht (response) wordt de tijdsmeting gestopt.
if (isOutbound(context)) {
stopTiming(context);
}
return true;
}
@Override
public boolean handleFault(SOAPMessageContext context) {
// Bij het inkomende bericht (request) wordt de tijdsmeting gestart.
if (isInbound(context)) {
startTiming(context);
}
// Bij het uitgaande bericht (response) wordt de tijdsmeting gestopt.
if (isOutbound(context)) {
stopTiming(context);
}
return true;
}
private void startTiming(SOAPMessageContext context) {
String serviceName = ((QName) context.get(MessageContext.WSDL_SERVICE)).toString();
String operatiOnName= ((QName) context.get(MessageContext.WSDL_OPERATION)).getLocalPart();
Timer timer = metricRegistry.timer(serviceName + "_" + operationName + "_timer");
Timer.Context timerCOntext= timer.time(); // start
}
private void stopTiming(SOAPMessageContext context) {
String serviceName = ((QName) context.get(MessageContext.WSDL_SERVICE)).toString();
String operatiOnName= ((QName) context.get(MessageContext.WSDL_OPERATION)).getLocalPart();
MetricID metricID = new MetricID(serviceName + "_" + operationName + "_timer");
Timer timer = metricRegistry.getTimers().get(metricID);
Timer.Context timerCOntext= timer.time();
timerContext.stop();
}
}

在此期间,@ Timed批注正在运行,我希望使用@Timed批注。 但是,我不知道这个(@Timed)是否是线程安全的。

我使用eclipse microProfile Metrics的Payara实现。





推荐阅读
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • Hibernate入门指南:单表数据库操作详解
    本文介绍了Hibernate作为全面的ORM框架的基础知识,并详细讲解了在MyEclipse环境中配置Hibernate以及进行基本的数据库单表操作的方法,包括增删改查等常见操作。 ... [详细]
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 本文旨在探讨计算机机房的有效管理与维护方法,包括合理的机房布局设计、高效的操作系统安装与恢复技术以及数据保护措施。随着信息技术教育的发展,计算机机房作为教学的重要组成部分,其稳定性和安全性直接影响到教学质量。文章分析了当前机房管理中存在的问题,并提出了针对性的解决方案。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • VMware 15.5.7 中文版激活方法
    本文提供了一种有效的方法来激活 VMware 15.5.7 的中文版本,同时介绍了如何利用最新的激活码进行操作,确保用户能够顺利使用。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • 使用Python模拟登录教务系统抓取成绩并分析存储
    本文详细介绍如何使用Python编程语言模拟登录学校教务系统,抓取学生的成绩信息,并进行数据分析和可视化处理,最终将数据存储到MySQL数据库中。 ... [详细]
  • django项目中使用手机号登录
    本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数function.py文件se ... [详细]
  • Linux环境下的PHP7安装与配置指南
    本文详细介绍了如何在Linux操作系统中安装和配置PHP7,包括检查当前PHP版本、升级PHP以及配置MySQL支持等步骤,适合后端开发者参考。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • 随着物联网技术的快速发展,NB-IoT(窄带物联网)作为一项关键的技术,正逐步成为实现大规模设备互联的重要手段。本文将详细介绍NB-IoT技术的特点、应用场景及其在实际项目中的应用实例。 ... [详细]
  • 本文详细介绍了Java中的泛型概念及其在类、接口和方法中的应用。泛型是自JDK 1.5以来引入的一项重要特性,旨在增强代码的灵活性和安全性。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
author-avatar
局外人2502854057
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有