Data format is : YYYY-MM-DD
Version format is : major.minor.patch
배포자원
db_script.zip glue-scheduler-job-1.2.x.jar glue-scheduler-manager-1.3.x.war ( M0SA010APP.ear ) meta-manager.properties scheduler-server-1.2.x.zip
db_script.zip + quartz-2.2.2 - tables_oracle.sql - tables_postgres.sql + scheduler - tables_oracle.sql - tables_postgres.sql <-- 추가 + security - tables_oracle.sql - tables_postgres.sql
MetaData 화면 개선 : 실행옵션 등록시 메모리 옵션은 관리자(ex. admin) 만 등록가능 하도록 수정.
Role 화면 기능 개선 : ROLE 추가시 Resource 매핑정보도 같이 추가되도록 보완
PostgreSQL이 DB 일 경우, SQL 오류 조치
수정전 INSERT INTO USERS (USER_ID, CRC_ID, PASSWORD, GROUP_ID, USER_NAME, LANGUAGE, WORK_LOCATION, ENABLED, START_ACTIVE_DATE, END_ACTIVE_DATE, CREATE_DATE, CREATE_USER, MODIFY_DATE, MODIFY_USER) VALUES (?, ?, ?, 'GRO_ADMIN', 'admin', 'ko', 'ko', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP+3, CURRENT_TIMESTAMP, 'SQL', CURRENT_TIMESTAMP, 'SQL') 수정후 INSERT INTO USERS (USER_ID, CRC_ID, PASSWORD, GROUP_ID, USER_NAME, LANGUAGE, WORK_LOCATION, ENABLED, START_ACTIVE_DATE, END_ACTIVE_DATE, CREATE_DATE, CREATE_USER, MODIFY_DATE, MODIFY_USER) VALUES (?, ?, ?, 'GRO_ADMIN', 'admin', 'ko', 'ko', 1, CURRENT_DATE, CURRENT_DATE+3, CURRENT_TIMESTAMP, 'SQL', CURRENT_TIMESTAMP, 'SQL')
2016-07-14 10:46:59,080 [localhost-startStop-1] ERROR com.poscoict.app.security.web.GlueContextLoaderListener - fail to executeUpdate org.postgresql.util.PSQLException: ERROR: operator does not exist: timestamp with time zone + integer Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts. Position: 283 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2284) ~[postgresql-9.4.1208.jre7.jar:9.4.1208.jre7] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2003) ~[postgresql-9.4.1208.jre7.jar:9.4.1208.jre7] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:200) ~[postgresql-9.4.1208.jre7.jar:9.4.1208.jre7] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424) ~[postgresql-9.4.1208.jre7.jar:9.4.1208.jre7] at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:161) ~[postgresql-9.4.1208.jre7.jar:9.4.1208.jre7] at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:133) ~[postgresql-9.4.1208.jre7.jar:9.4.1208.jre7] at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:97) ~[tomcat-dbcp.jar:8.0.30] at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:97) ~[tomcat-dbcp.jar:8.0.30] at com.poscoict.app.security.web.GlueContextLoaderListener.contextInitialized(GlueContextLoaderListener.java:93) ~[classes/:na] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) [catalina.jar:8.0.30] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) [catalina.jar:8.0.30] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.0.30] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.30] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.30] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.30] at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1101) [catalina.jar:8.0.30] at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1813) [catalina.jar:8.0.30] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_31] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_31] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_31] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]
수정전 INSERT INTO users (USER_ID,CRC_ID,PASSWORD,GROUP_ID,USER_NAME,LANGUAGE,WORK_LOCATION,ENABLED,START_ACTIVE_DATE,END_ACTIVE_DATE,CREATE_DATE,CREATE_USER,MODIFY_DATE,MODIFY_USER) VALUES (:USER_ID,:CRC_ID,:PASSWORD,:GROUP_ID,:USER_NAME,:LANGUAGE,:WORK_LOCATION,:ENABLED,:START_ACTIVE_DATE,:END_ACTIVE_DATE,CURRENT_TIMESTAMP,:audit,CURRENT_TIMESTAMP,:audit) 수정후 INSERT INTO users (USER_ID,CRC_ID,PASSWORD,GROUP_ID,USER_NAME,LANGUAGE,WORK_LOCATION,ENABLED,START_ACTIVE_DATE,END_ACTIVE_DATE,CREATE_DATE,CREATE_USER,MODIFY_DATE,MODIFY_USER) VALUES (:USER_ID,:CRC_ID,:PASSWORD,:GROUP_ID,:USER_NAME,:LANGUAGE,:WORK_LOCATION,to_number(:ENABLED,'9'),:START_ACTIVE_DATE,:END_ACTIVE_DATE,CURRENT_TIMESTAMP,:audit,CURRENT_TIMESTAMP,:audit)
Status 코드 개선 - 로그 보완
개선전 로그 : Scheduler Server에서 Status를 200 으로만 설정해서, Job이 정상 수행되었음에도 ERROR 로그를 남김.
DEBUG com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - [name=request_id, value=-1, name=job_name, value=sample1.job001, name=client_ip, value=10.151.3.14, name=jobParam-_user_id_, value=admin] ERROR com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - Method failed: HTTP/1.1 200 OK INFO com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - Response Body :1 INFO com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - Status Line :HTTP/1.1 200 OK
개선후 로그 : Scheduler Server에서 Job 호출 Event를 받아서 정상 실행된 경우 700, 에러발생시 800 으로 설정함.
그외 Event( activate trigger 등 ) 의 경우 정상 실행은 200, 권한이 없는 경우와 에러가 발생한 경우 500 으로 설정함.
DEBUG com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - [name=request_id, value=-1, name=job_name, value=sample1.job001, name=client_ip, value=10.151.3.14, name=jobParam-_user_id_, value=admin] INFO com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - Response Body :2 INFO com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender - Status Line :HTTP/1.1 700