최초 업로드

This commit is contained in:
ByeonJungHun
2024-07-25 10:54:05 +09:00
commit 463d11343c
20 changed files with 834 additions and 0 deletions

33
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,33 @@
stages:
- build
- push
build:
image: docker:cli
stage: build
services:
- docker:dind
variables:
IMAGE_NAME: $REGISTRT/$APP:$VER
script:
- docker build --pull -t "$IMAGE_NAME" .
except:
variables:
- $CI_COMMIT_MESSAGE =~ /CI 수정/
- $CI_COMMIT_MESSAGE =~ /최초 업로드/
push:
image: docker:cli
stage: push
services:
- docker:dind
variables:
IMAGE_NAME: $REGISTRT/$APP:$VER
before_script:
- docker login -u "$REGSITRY_USER" -p "$REGSITRY_PASSWORD" $REGISTRT
script:
- docker push "$IMAGE_NAME"
except:
variables:
- $CI_COMMIT_MESSAGE =~ /CI 수정/
- $CI_COMMIT_MESSAGE =~ /최초 업로드/

6
Dockerfile Normal file
View File

@@ -0,0 +1,6 @@
FROM alpine:3.20.2
LABEL version="1.0.17"
LABEL agent_name="java-agent"
COPY ./java ./mnt/

View File

1
java/cfg/agent/db.alias Normal file
View File

@@ -0,0 +1 @@
# ip.port.databasename=alias

412
java/cfg/agent/java.conf Normal file
View File

@@ -0,0 +1,412 @@
#################### Transport Options ####################
# eg) 127.0.0.1:1314
RECEIVER_ADDR=
# default 1000ms (Min 500, Max 60000)
RECEIVER_RECONNECT_DELAY_TIME=
#################### Runtime Immutable Options ####################
# default 200
TXN_BUFFER_COUNT=
# default 256
MTD_STACK_SIZE=
# default false
USE_RUNTIME_REDEFINE=
# default true
USE_RUNTIME_REDEFINE_HTTP_REMOTE=
# default false
REMOVE_JDBC_ADVICE=
# default false
REMOVE_JDBC_BIND_ADVICE=
# default false
DISABLE_SQL_SID=
# default false
USE_ORACLE_RAC=
# default false
USE_TIBERO_TAC=
# default false
DISABLE_CLASS_SOURCE=
# default false
DISABLE_CLASS_META_CACHING=
#################### Runtime Changeable Options ####################
# eg) thread name pattern (startsWith)
EXCLUDE_THREAD=
# default false
DISABLE_EXCLUDE_THREAD=
# eg) gif, js, css, xml, jpg, jpeg, png, ico, woff, woff2
EXCLUDE_SERVICE=gif, js, css, xml, jpg, jpeg, png, ico, woff, woff2
# eg) gif, js, css
EXCLUDE_SERVICE_AT_END_TIME=
# eg) prefix1, prefix2
EXCLUDE_TXCODE=
# eg) type.Exception
EXCLUDE_EXCEPTION=weblogic.servlet.jsp.AddToMapException
# eg) type.Exception
INCLUDE_EXCEPTION=
# eg) type.Exception
INCLUDE_EXCEPTION_FOR_ALARM=
# default 0
TXN_ELAPSE_TIME=
# ${TXNNAME}:${TXNTIME(ms)},${TXNNAME}:${TXNTIME(ms)}
CURR_TRACE_TXN=*:3000
# txn name 0:default, 1:parameter, 2:param_nouri, 3:attribute
TRX_NAME_TYPE=
# txn key
TRX_NAME_KEY=
# default false
TRX_NAME_USE_ENCODING=
# default ISO-8859-1
TRX_NAME_ENCODING_FROM=
# default UTF-8
TRX_NAME_ENCODING_TO=
# default UTF-8
REQ_SET_ENCODING_TO=
# default false
USE_TRX_NAME_WHEN_LEAVE=
# default false
ENABLE_TRACE_JSP_CLASS=
# eg) replace number patterns [0-9]+
REPLACE_URL_PATTERNS=
# default 0
TXN_NAME_SET_INDEX=
# default 0
TXN_NAME_SET_INDEX2=
# default 0
TXN_NAME_APPEND_INDEX=
# txn login name 0:default, 1:attribute, 2:cookie
TRX_LOGIN_TYPE=
# txn login key
TRX_LOGIN_KEY=
# default false
ENABLE_ENCRYPT_LOGIN_NAME=
# default empty string
TRX_IP_KEY=
# txn error 0: default, 1: response(500), 2: response(400)
TRX_ERR_TYPE=
# default empty string
TRX_ERR_STATUS=
# 0: none(default), 1: error thread dump, 2: all thread dump
TRX_ERR_STATUS_TYPE=
# default true
DISABLE_WEBID=
# default false
USE_SESSIONID_FOR_WEBID=
# default false
ENABLE_WEB_ID_WHEN_NO_USERAGENT=
# default false
ENABLE_UPDATE_WEBID_COOKIE_TIME=
# default false
TRACE_THREAD_NAME=
# default false
DISABLE_ROOT_METHOD=
# default true
TRACE_DBPOOL_NAME=
# default false
USE_METHOD_SEQ=
# default false
METHOD_DEBUG=
# default 0
MTD_ELAPSE_TIME=
# default 2500
MTD_BUFFER_SIZE=
# default 100
MTD_EXCEPTION_BUFFER_SIZE=
# default 100
MTD_STACK_BUFFER_SIZE=
# default 256
MTD_ERROR_LIMIT=
# default 100000
MTD_LIMIT=
# default false
MTD_PARAM_TRACE=
# default false
RMI_GET_PARAM=
# default 0ms
ACTIVE_ELAPSE_TIME=
# default 200
ACTIVE_MAX_COUNT=
# default false
USE_ETOE_ONLY=
# default true
RT_RMI=
# default ext
RT_RMI_VENDOR=
# default 0ms
RT_RMI_ELAPSE_TIME=
# default 0x00 eg) FILE_OPEN,FILE_CLOSE
RT_FILE=
# default 0x10 eg) SOCKET_OPEN,SOCKET_CLOSE
RT_SOCKET=
# default false
USE_MTD_EXT=
# default false
USE_XRT_HANDLE=
# default false
USE_INACTIVE_SOCKET_RT=
# default false
USE_TRACE_COLLECTION_LEAK=
# default 1000
TRACE_COLLECTION_SIZE=
# default 10000
TRACE_COLLECTION_STACKTRACE_SIZE=
# default 600000ms(10minutes)
TRACE_COLLECTION_REPORT_PERIOD=
# default true
TRACE_JDBC=
# default false
DISABLE_SQL=
# default false
DISABLE_SQL_BIND=
# default false
DISABLE_SQL_FETCH=
# default 20
LIMIT_SQL=
# default false
USE_SQL_SEQ=
# default 0(ms)
SQL_DETAIL_ELAPSE_LIMIT=
# default 20000
SQL_CACHE_MAX_COUNT=
# default false
COMPRESS_SQL=
# default false
CONVERT_SQL_ASCII_TO_KSC5601=
# default null
CONVERT_SQL_ASCII_TO=
# default null
CONVERT_SQL_TEXT_ENCODING_FROM=
# default null
CONVERT_SQL_TEXT_ENCODING_TO=
# default 2048, max 8192
BIND_SIZE=
# default 1024
MONGO_BIND_SIZE=
# default 50ms
BIND_ELAPSE_TIME=
# default false
ENABLE_ENCRYPT_SQL_BIND=
# default false
TRACE_FETCH_METHOD=
# default false
TRACE_MONGO_FETCH=
# default 0
THROW_TXN_FETCH_COUNT=
# default 0
THROW_SQL_FETCH_COUNT=
# eg) gif, js, css
THROW_EXCLUDE_SERVICE=
# default 2000
CONNECTION_LIMIT=
# default false
GET_SID_WHEN_STMT=
# default 600000ms(10minutes)
GET_SID_WHEN_STMT_LIMIT=
# default false
CHANGE_DB2_SID_QUERY=
# default false
USE_TRACE_ORACLE=
# default false
USE_TRACE_ORACLE_CLEAR_PING=
# default false
USE_TRACE_TIBERO=
# default true
USE_JMX=
# default false
TRACE_METHOD_MEMORY=
# default false
TRACE_METHOD_CPUTIME=
# default false
TXN_MEMORY=
# default false
TXN_CPU_TIME=
# default false
TXN_CPU_CORE=
# error.jsp
REDIRECT_URL=
# default empty string
PLC_MESSAGE=
# default empty string
RUM_MESSAGE=
# default 3600
RUM_SCRIPT_INJECTION_CLIENT_RESET_SECOND=
# default -1
RUM_SCRIPT_INJECTION_CLIENT_COUNT=
# default false
USE_TRACE_CLIENT_TIME=
# default empty string
TRACE_CLIENT_TIME_POSTFIX=
# eg) 192.168.0.10:8082
TRACE_CLIENT_TIME_ADDR=
# default false
RESP_HTML_SCRIPT=
# default 50ms
RESP_HTML_ELAPSE_TIME=
# eg) .*\.jsp
RESP_HTML_SCRIPT_TARGET=.*\.jsp
# default 1,2,3, 1: Environment, 2: InetAddress, 3: Command
HOSTNAME_COLLECT_TYPE_PRIORITY=
# default 50
ACTIVE_STACK_MAX_LINE=
# default 10
ACTIVE_STACK_INTERVAL_ELAPSE=
# default 0sec
APP_SLEEP=
# default true
ENABLE_RELOAD_ADVICE=
# ${ALERT}:${RESTART}:${LEVEL},${ALERT}:${RESTART}:${LEVEL}
LOG_ALERT=1:java.lang.OutOfMemoryError,2:container {0} booted
# default false
RESP_HEADER_TID=
# default false
TRACE_SIMPLE_METHOD=
# default 60KB
MTD_MAX_SIZE=
# default false
USE_METHOD_LIST=
# default false
USE_JAR_LIST=
# default log eg) log or AbsolutePath
LOG_PATH=
# default -1
LOG_MAX_COUNT=
# default false
EXEM_RUN_ON_CONTAINER=
# default empty string
EXEM_GROUP_ID=
# default 0x000000000 eg) RMI,HTML,RESPONSE,CLASS,GC,UDP,TCP,TRACE,DEBUG
DEBUG=0x000000000

1
java/cfg/file.history Normal file
View File

@@ -0,0 +1 @@
#D:\dump1.txt

14
java/cfg/local.advice Normal file
View File

@@ -0,0 +1,14 @@
### 작성방법
# 패키지 및 클래스 구분자는 slash(/)이며 클래스와 메소드는 dot(.)으로 구분한다.
# 강제포함, 제외, 포함 순으로 높은 우선순위를 갖는다.
# 강제포함은 exclamation mark(!), 제외는 dash(-)를 접두사로 붙여 표기한다.
# 와일드카드 문자(*)를 포함해 startWith, endWith 연산을 수행할 수 있다.
# 로드된 전체 클래스를 대상으로한 설정은 안정성 문제로 인해 동적 적용되지 않는다.
### 작성예시
# com/inzent.*
# -com/inzent/igate.*
# !com/inzent/igate/util.*
!javax/servlet/http/HttpServlet.*

0
java/cfg/param.runtime Normal file
View File

23
java/cfg/plc.list Normal file
View File

@@ -0,0 +1,23 @@
########################################### PLC 기능 ###########################################
### 작성방법
# [숫자] : 제어 기준 수치(기준 트랜잭션수)
# 접두사 ^(caret) : 차단할 트랜잭션명
# 접두사 .*(dot asterisk) : 와일드 카드
# 제어 기준은 여러 개를 입력할 수 있으며, 그 기준은 이 파일의 위에서 아래순으로 우선 적용된다.
### 작성예시
# [200]
# ^.*/select
#
# [100]
# ^.*oracle/select
# .*postgres/select
#
# [50]
# ^.*postgres/select
#
# 액티브 트랜잭션 수가 200 이상이면 /select로 끝나는 모든 트랜잭션을 차단한다.
# 액티브 트랜잭션 수가 100 이상이면 oracle/select로 끝나는 모든 트랜잭션을 차단한다.
# 액티브 트랜잭션 수가 100 이상이면 postgres/select로 끝나는 트랜잭션은 허용한다.
# 액티브 트랜잭션 수가 50 이상이면 postgres/select로 끝나는 모든 트랜잭션을 차단한다.

96
java/cfg/x.advice Normal file
View File

@@ -0,0 +1,96 @@
appService@com.exem.weave.servlet.XmAPPService
httpCall@com.exem.weave.io.XmHttpCall
httpCallHeader@com.exem.weave.io.XmHttpCallHeader
httpRequest@com.exem.weave.io.XmHttpRequest
xCall@com.exem.weave.io.XmXCall
xInbound@com.exem.weave.io.XmXInbound
xOutbound@com.exem.weave.io.XmXOutbound
xReply@com.exem.weave.io.XmXReply
service@com.exem.weave.servlet.XmService
kepco@com.exem.weave.servlet.XmTxnKepco
########## APPLICATION ##########
#appService=
#websphere 8.5 browser response time
#service=com/ibm/ws/webcontainer/filter/WebAppFilterManager.invokeFilters(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lcom/ibm/wsspi/webcontainer/servlet/IServletContext;Lcom/ibm/wsspi/webcontainer/RequestProcessor;Ljava/util/EnumSet;)Z
## Spring Cloud Gateway ##
#appService=org/springframework/cloud/gateway/filter/NettyRoutingFilter.filter(Lorg/springframework/web/server/ServerWebExchange;Lorg/springframework/cloud/gateway/filter/GatewayFilterChain;)Lreactor/core/publisher/Mono;
########## HTTP ##########
httpCall=weblogic/net/http/HttpClient.parseHTTP(Lweblogic/net/http/MessageHeader;)V
httpRequest=weblogic/net/http/HttpURLConnection.writeRequests()V
httpCall=org/apache/commons/httpclient/HttpClient.executeMethod(Lorg/apache/commons/httpclient/HostConfiguration;Lorg/apache/commons/httpclient/HttpMethod;Lorg/apache/commons/httpclient/HttpState;)I
httpCall=org/apache/http/impl/client/InternalHttpClient.doExecute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/client/methods/CloseableHttpResponse;
httpCall=org/apache/http/impl/client/MinimalHttpClient.doExecute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/client/methods/CloseableHttpResponse;
httpCall=org/apache/commons/httpclient/HttpMethodBase.execute(Lorg/apache/commons/httpclient/HttpState;Lorg/apache/commons/httpclient/HttpConnection;)I
## soap ##
httpCall=org/apache/soap/util/net/HTTPUtils.post(Ljava/net/URL;Lorg/apache/soap/transport/TransportMessage;ILjava/lang/String;II)Lorg/apache/soap/transport/TransportMessage;
## soap-2.3.jar higher ##
#httpCall=org/apache/soap/util/net/HTTPUtils.post(Ljava/net/URL;Lorg/apache/soap/transport/TransportMessage;ILjava/lang/String;IILjava/lang/Boolean;)Lorg/apache/soap/transport/TransportMessage;
## apache axis ##
httpCall=org/apache/axis/client/Call.setRequestMessage(Lorg/apache/axis/Message;)V
## reactor netty / jetty (webflux) ##
httpCall=reactor/netty/http/client/HttpClientConnect.connect()Lreactor/core/publisher/Mono;
httpCall=org/eclipse/jetty/client/HttpRequest.send(Lorg/eclipse/jetty/client/api/Response$CompleteListener;)V
## Spring AsyncRestTemplate ##
httpCall=org/springframework/web/client/AsyncRestTemplate$AsyncRequestCallbackAdapter.doWithRequest(Lorg/springframework/http/client/AsyncClientHttpRequest;)V
## apache httpasyncclient ##
httpCall=org/apache/http/impl/nio/client/CloseableHttpAsyncClient.execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/concurrent/FutureCallback;)Ljava/util/concurrent/Future;
httpCall=org/apache/http/impl/nio/client/CloseableHttpAsyncClient.execute(Lorg/apache/http/nio/protocol/HttpAsyncRequestProducer;Lorg/apache/http/nio/protocol/HttpAsyncResponseConsumer;Lorg/apache/http/concurrent/FutureCallback;)Ljava/util/concurrent/Future;
## okhttp ##
httpCallHeader=okhttp3/Request$Builder.build()Lokhttp3/Request;
httpCall=okhttp3/RealCall.execute()Lokhttp3/Response;
httpCall=okhttp3/RealCall.enqueue(Lokhttp3/Callback;)V
## spring cloud zuul (restclient) ##
httpCallHeader=com/netflix/client/http/HttpRequest$Builder.build()Lcom/netflix/client/http/HttpRequest;
httpCall=org/apache/http/impl/client/AbstractHttpClient.doExecute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/client/methods/CloseableHttpResponse;
########## TMAX ##########
xCall=tmax/webt/WebtRemoteService.tpcall(Ljava/lang/String;Ltmax/webt/WebtBuffer;Ltmax/webt/WebtAttribute;)Ltmax/webt/WebtBuffer;
xCall=tmax/webt/WebtRemoteService.tpacall(Ljava/lang/String;Ltmax/webt/WebtBuffer;Ltmax/webt/WebtAttribute;Ltmax/webt/WebtMessageHandler;)I
#xOutbound=tmax/webt/io/WebtOutputStream.getSerializedPacket(Ltmax/webt/WebtBuffer;)[B
#xReply=tmax/webt/WebtRemoteService.tpgetrply(ILtmax/webt/WebtAttribute;)Ltmax/webt/WebtBuffer;
########## TUXEDO ##########
xCall=weblogic/wtc/gwt/TuxedoConnection.tpcall(Ljava/lang/String;Lweblogic/wtc/jatmi/TypedBuffer;I)Lweblogic/wtc/jatmi/Reply;
xCall=weblogic/wtc/gwt/TuxedoConnection.tpacall(Ljava/lang/String;Lweblogic/wtc/jatmi/TypedBuffer;ILweblogic/wtc/jatmi/TpacallAsyncReply;)Lweblogic/wtc/jatmi/CallDescriptor;
#xOutbound=weblogic/wtc/jatmi/TuxedoArrayOutputStream.getByteArrayReference()[B
#xReply=weblogic/wtc/gwt/TuxedoConnection.tpgetrply(Lweblogic/wtc/jatmi/CallDescriptor;I)Lweblogic/wtc/jatmi/Reply;
########## SAP ##########
xCall=com/sap/conn/jco/rt/AbapFunction.execute(Lcom/sap/conn/jco/JCoDestination;)V
xCall=com/sap/conn/jco/rt/AbapFunction.execute(Lcom/sap/conn/jco/JCoDestination;Ljava/lang/String;)V
xCall=com/sap/conn/jco/rt/AbapFunction.execute(Lcom/sap/conn/jco/JCoDestination;Ljava/lang/String;Ljava/lang/String;)V
#xOutbound=com/sap/conn/rfc/driver/CpicDriver.write([BIZ)I
#xReply=com/sap/conn/rfc/engine/RfcIoOpenCntl.RfcReceive([Lcom/sap/conn/rfc/api/IRfcParameter;[Lcom/sap/conn/rfc/api/IRfcParameter;[Lcom/sap/conn/rfc/api/IRfcTable;Lcom/sap/conn/jco/JCoRepository;)V
########## RabbitMQ ##########
rabbitMQPublish@com.exem.weave.io.XmRabbitMQPublish
rabbitMQPublish=com/rabbitmq/client/impl/AMQChannel.transmit(Lcom/rabbitmq/client/impl/AMQCommand;)V
########## Kafka ##########
kafkaProduce@com.exem.weave.io.XmKafkaProduce
kafkaProduce=org/apache/kafka/clients/producer/KafkaProducer.doSend(Lorg/apache/kafka/clients/producer/ProducerRecord;Lorg/apache/kafka/clients/producer/Callback;)Ljava/util/concurrent/Future;
kafkaAppend@com.exem.weave.io.XmKafkaRecordAppend
kafkaAppend=org/apache/kafka/clients/producer/internals/RecordAccumulator.append(Ljava/lang/String;IJ[B[B[Lorg/apache/kafka/common/header/Header;Lorg/apache/kafka/clients/producer/internals/RecordAccumulator$AppendCallbacks;JZJLorg/apache/kafka/common/Cluster;)Lorg/apache/kafka/clients/producer/internals/RecordAccumulator$RecordAppendResult;
#appService=org/springframework/kafka/listener/adapter/RecordMessagingMessageListenerAdapter.onMessage(Lorg/apache/kafka/clients/consumer/ConsumerRecord;Lorg/springframework/kafka/support/Acknowledgment;Lorg/apache/kafka/clients/consumer/Consumer;)V
appService=org/apache/kafka/clients/consumer/internals/Fetcher.parseRecord(Lorg/apache/kafka/common/TopicPartition;Lorg/apache/kafka/common/record/RecordBatch;Lorg/apache/kafka/common/record/Record;)Lorg/apache/kafka/clients/consumer/ConsumerRecord;
#appService=appService=org/apache/kafka/clients/consumer/internals/CompletedFetch.parseRecord(Lorg/apache/kafka/clients/consumer/internals/Deserializers;Lorg/apache/kafka/common/TopicPartition;Ljava/util/Optional;Lorg/apache/kafka/common/record/TimestampType;Lorg/apache/kafka/common/record/Record;)Lorg/apache/kafka/clients/consumer/ConsumerRecord;
########## Camel ##########
#camelSedaCall@com.exem.weave.io.XmCamelSedaProduce
#camelSedaCall=org/apache/camel/component/seda/SedaProducer.process(Lorg/apache/camel/Exchange;Lorg/apache/camel/AsyncCallback;)Z
camelProduce@com.exem.weave.io.XmCamelProduce
camelProduce=org/apache/camel/component/seda/SedaProducer.prepareCopy(Lorg/apache/camel/Exchange;Z)Lorg/apache/camel/Exchange;
#appService=org/apache/camel/support/processor/DelegateSyncProcessor.process(Lorg/apache/camel/Exchange;Lorg/apache/camel/AsyncCallback;)Z
appService=org/apache/camel/processor/SendProcessor.process(Lorg/apache/camel/Exchange;Lorg/apache/camel/AsyncCallback;)Z
########## Redis ##########
redisCall@com.exem.weave.io.XmRedisCommand
redisCall=io/lettuce/core/RedisChannelHandler.dispatch(Lio/lettuce/core/protocol/RedisCommand;)Lio/lettuce/core/protocol/RedisCommand;
redisCall=redis/clients/jedis/Connection.sendCommand(Lredis/clients/jedis/CommandArguments;)V

147
java/data/exem_api_em.js Normal file
View File

@@ -0,0 +1,147 @@
(function () {
var _XM_TID = '%{XM_TID}';
var _XM_TRACE_ELAPSE = '%{XM_TRACE_ELAPSE}';
var _XM_CLIENT_API = '_XM_CLIENT_API%{XM_CLIENT_API}';
var _XM_CLIENT_ADDR = '%{XM_CLIENT_ADDR}';
var _XM_TID_HEADER = 'X-Xm-Tid';
var _XM_TRACE_ELAPSE_HEADER = 'X-Xm-ElapseTime';
var openProxied = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function () {
if (arguments[1].indexOf(_XM_CLIENT_API) == -1) {
if (document.removeEventListener) {
this.removeEventListener("loadstart", _xm_loadstart);
this.removeEventListener("loadend", _xm_loadend);
}
else {
this.detachEvent("loadstart", _xm_loadstart);
this.detachEvent("loadend", _xm_loadend);
}
if (this.addEventListener) {
this.addEventListener("loadstart", _xm_loadstart);
this.addEventListener("loadend", _xm_loadend);
}
else if (this.attachEvent) {
this.attachEvent("onloadstart", _xm_loadstart);
this.attachEvent("onloadend", _xm_loadend);
}
}
return openProxied.apply(this, [].slice.call(arguments));
};
var _xm_loadstart = function () {
var eventProxied = this.onreadystatechange;
this.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE) {
this._xm_clientinfo.es = Date.now();
}
if (eventProxied != null && typeof eventProxied != 'undefined') {
eventProxied.apply(this, [].slice.call(arguments));
}
if (this.readyState === XMLHttpRequest.DONE) {
this._xm_clientinfo.ee = Date.now();
}
};
this._xm_clientinfo = __xm_create_clientinfo();
this._xm_clientinfo.ss = Date.now();
this._xm_clientinfo.se = Date.now();
};
var _xm_loadend = function () {
if (typeof this._xm_clientinfo == 'undefined') return;
if (this._xm_clientinfo.es == 0) {
this._xm_clientinfo.es = Date.now();
this._xm_clientinfo.ee = Date.now();
}
this._xm_clientinfo.tid = this.getResponseHeader(_XM_TID_HEADER);
var traceElapseTime = this.getResponseHeader(_XM_TRACE_ELAPSE_HEADER);
if (typeof traceElapseTime == 'undefined' || typeof this._xm_clientinfo.tid == 'undefined') {
return;
}
if (traceElapseTime > this._xm_clientinfo.ee - this._xm_clientinfo.ss) {
return;
}
var _xm_clientinfo = this._xm_clientinfo;
__xm_send_post(_xm_clientinfo);
};
function __xm_create_clientinfo() {
var clientinfo = {};
clientinfo.tid = 0;
clientinfo.ss = 0;
clientinfo.se = 0;
clientinfo.es = 0;
clientinfo.ee = 0;
return clientinfo;
}
function __xm_send_post(clientinfo) {
try{
var queryParameters = 'tid=' + clientinfo.tid + '&ss=' + clientinfo.ss + "&se=" + clientinfo.se;
queryParameters += '&es=' + clientinfo.es + "&ee=" + clientinfo.ee;
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(_XM_CLIENT_ADDR == "") {
xmlhttp.open('GET', './'+_XM_CLIENT_API+'?' + queryParameters, true);
}else{
xmlhttp.open('GET', 'http://' + _XM_CLIENT_ADDR + '/' + _XM_CLIENT_API + '?' + queryParameters, true);
}
xmlhttp.send(null);
if (true) {
var sendElapseTime = clientinfo.se - clientinfo.ss;
var recvElapseTime = clientinfo.ee - clientinfo.es;
var serverElapseTime = clientinfo.es - clientinfo.se;
console.log('__xm_send_post serverElapseTime=' + serverElapseTime + ', sendElapseTime=' + sendElapseTime + ', recvElapseTime=' + recvElapseTime);
}
}
catch(e) {
console.log(e);
}
}
var _xm_window_load = function () {
//return;
setTimeout(function () {
var timing = window.performance.timing;
var clientinfo = __xm_create_clientinfo();
clientinfo.ss = timing.navigationStart;
clientinfo.se = timing.connectEnd;
clientinfo.es = timing.responseEnd;
clientinfo.ee = timing.loadEventEnd;
clientinfo.tid = _XM_TID;
if (_XM_TRACE_ELAPSE > clientinfo.ee - clientinfo.ss) {
return;
}
__xm_send_post(clientinfo);
}, 0);
};
if (!window.performance || !window.performance.timing) {
return;
}
if (this.addEventListener) {
this.addEventListener("load", _xm_window_load);
}
else if (this.attachEvent) {
this.attachEvent("onload", _xm_window_load);
}
})();

View File

@@ -0,0 +1,30 @@
<html>
<head>
<meta charset="utf-8">
<title>Message (InterMax)</title>
<style type="text/css">
body {
padding: 100px;
}
h1 {
font-size: 32pt;
text-align: center;
}
#messagediv {
font-size:14pt;
color:red;
text-align: center;
padding: 20px;
border: 1px solid black;
margin-top: 100px;
}
</style>
</head>
<body>
<!-- <h1>${title}</h1> -->
<div id="messagediv">%{XM_PLC_MESSAGE}</div>
</body>
</html>

View File

@@ -0,0 +1,28 @@
<html>
<head>
<meta charset="utf-8">
<title>Message (InterMax)</title>
<style type="text/css">
body {
padding: 100px;
}
h1 {
font-size: 32pt;
text-align: center;
}
#messagediv {
font-size:14pt;
color:red;
text-align: center;
padding: 20px;
border: 1px solid black;
margin-top: 100px;
}
</style>
</head>
<body>
<h1>InterMax Rum Message</h1>
<div id="messagediv">%{XM_RUM_MESSAGE}</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

BIN
java/lib/exem-java-ext.jar Normal file

Binary file not shown.

BIN
java/lib/exem-java-pool.jar Normal file

Binary file not shown.

View File

@@ -0,0 +1,29 @@
ASM is released under the following 3-Clause BSD License:
ASM: a very small and fast Java bytecode manipulation framework
Copyright (c) 2000-2011 INRIA, France Telecom
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

7
java/pkg_version.bat Normal file
View File

@@ -0,0 +1,7 @@
@echo off
set PRODUCT_NAME=exemONE
set MODULE_NAME=exem-java-agent
set VERSION=1.0.17
echo %PRODUCT_NAME% %MODULE_NAME% ver %VERSION%

7
java/pkg_version.sh Normal file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
PRODUCT_NAME="exemONE"
MODULE_NAME="exem-java-agent"
VERSION="1.0.17"
echo ${PRODUCT_NAME} ${MODULE_NAME} ver ${VERSION}