CICS-Java 응용 프로그램 시작 - (1) 간단한 예시 응용 프로그램 실행

입문


CICS Transaction Server forz/OS의 응용 프로그램 개발 언어는 대부분 COBOL, PL/I, Asembler 부근을 사용하지만 오래전부터 자바를 지원해 왔다.즉, CICS를 Java로 쓸 수 있는 어플리케이션입니다.EXEC CICS 명령에 해당하는 Java 클래스 라이브러리(JCICS)를 제공하기 때문에 Java 방법으로 EXEC CICS LINK나 EXEC CICS START 같은 조작을 할 수 있다.
여기서 우리는 CICS-Java 응용 프로그램의 샘플(OSGi 표준)을 실제로 이동하려고 시도할 것이다.
※ 참고로 CICS에서 JavaEE 응용 프로그램을 실행할 수도 있습니다.
참조: CICS에서 JavaEE 애플리케이션 실행

관련 문장


CICS-Java 응용 프로그램 시작 - (1) 간단한 예시 응용 프로그램 실행
CICS-Java 애플리케이션 시작 - (2) Maven을 통한 구축 관리
CICS-Java 애플리케이션 시작 - (3) Gradle 구축 관리
CICS-Java 응용 프로그램 이동 - (4) Spring Boot 응용 프로그램
CICS-Java 애플리케이션 시작 - (5) JCICSX 사용

환경 정보


개발 환경
Windows10
CICS Explorer V5.6(Beta)
운영 환경
z/OS V2.4
CICS Transaction Server for z/OS V5.6(Beta)

CICS에 대한 Java 지원 정보


CICS의 Java 지원을 구성합니다.
CICS는 OSGi에 맞는 Java 애플리케이션을 지원합니다.
Java에 설치된 CICS 응용 프로그램을 시작할 때 다음 절차를 밟아야 합니다.
런타임 준비
Java 응용 프로그램을 실행하려면 대상 CICS 영역에서 JVMSERVER라는 리소스 정의를 만들고 Java 실행 환경을 준비하십시오.
개발
개발 작업은 Eclipse 기반의 무료 도구인 CICS Explorer에서 진행됩니다.
import는 JCICS의 도서관의 자바 응용 프로그램을 제작하여 OSGi로 묶음(jar의 확장) 형식으로 포장하였다.(참고: OSGI 개요 이때 CICS 프로그램으로 식별하고자 하는 시작 논리는main 함수를 통해 실현되어야 한다.
여러 OSGi Bundle을 CICS 번들 단위로 묶습니다.
※ CICS에서도 Liberty를 실행할 수 있고, JavaEE 응용 프로그램도 CICS의 Liberty에서 실행할 수 있습니다.이런 상황에서 JavaEE 응용 프로그램은 WAR과 EAR 단위로 포장되지만, 이런 상황에서 그것들을'CICS 묶음'단위로 포장하는 것도 마찬가지다.
배치
CICS 번들을 운영 환경의 z/OS의 USS로 전송합니다.
CICS 영역의 리소스 정의에서 BUNDLE 정의를 작성하여 USS에서 전송되는 CICS 번들(Java 응용 프로그램)을 식별합니다.
CICS 영역의 리소스 정의에 PROGRAM 정의를 만들고 BUNDLE에 포함된 Java 클래스를 CICS 프로그램으로 등록합니다.
각 CICS 리소스 정의와 엔티티의 연관성은 다음과 같습니다.

사전 준비


개발 환경


다음 내용을 참조하여 Eclipse 기반 도구인 CICS Explorer를 다운로드하고 설정합니다.
참조: Downloading and starting CICS Explorer
※ 이 도구는 CICS 사용자가 무료로 사용할 수 있는 도구입니다.
호스트 연결 정의로서 대상 CICS에서 실행되는 z/OS에 대해 FTP 연결을 구성합니다.

운영 환경


실행 예제에 사용할 CICS 영역을 준비합니다.
여기서 CT56B4A1이라는 영역을 사용합니다.
JVMserver라는 리소스를 추가하여 Java 응용 프로그램을 실행합니다.

JVM 구성 파일


USS에서 JVM 구성 파일을 준비합니다.(JVMserServer의 속성은 실제로 이 USS의 파일에 지정됩니다. JVMSERVER 자원 정의는 이 JVM 구성 파일에 파일 이름을 지정합니다.)
샘플을 제공했기 때문에 복사해서 사용합니다.
/var/cicsts/cicsts56/CT56B4A1/JVMprofiles 디렉터리, 저기/usr/lpp/cicsts/cicsts56/JVMprofiles/DFHOSGI.jvmprofile(CICS 배포 디렉터리에 있는 OSGi의 예시 정의)를 복사합니다.
환경에 맞게 맞춤형으로 구성합니다.
DFHOSGI.jvmprofile 발췌
JAVA_HOME=/usr/lpp/java/J8.0_64/
WORK_DIR=/var/cicsts/cicsts56/CT56B4A1/work
-Xms32M
-Xmx256M
-Xmso1M
-Xgcpolicy:gencon
-Xscmx256M
-Xshareclasses:name=cicsts%g,groupAccess,nonfatal
-Xtune:virtualized
-Dcom.ibm.tools.attach.enable=no
_BPXK_DISABLE_SHLIB=YES

SIT


위의 배치 속성 파일의 디렉토리를 SIT 매개변수 JVMSPROFILEDIR로 지정합니다.
JVMPROFILEDIR=/var/cicsts/cicsts56/CT56B4A1/JVMProfiles 
변경 사항을 반영하기 위해 영역을 다시 시작합니다.

JVMserver 정의


JVMSERVER 리소스 정의를 준비합니다.
제품 제공 DFH$OSGI 그룹의 JVMSERVER 정의 "DFHJVMS"를 적절한 그룹에 복사하여 설치합니다.
OBJECT CHARACTERISTICS                                    CICS RELEASE = 0730 
 CEDA  View JVmserver( DFHJVMS  )                                             
  JVmserver      : DFHJVMS                                                    
  Group          : TAG$OSGI                                                   
  DEScription    : CICS JVM server to run OSGi samples                        
  Status         : Enabled            Enabled | Disabled                      
  Jvmprofile     : DFHOSGI                                        (Mixed Case)
  Lerunopts      : DFHAXRO                                                    
  Threadlimit    : 015                1-256                                   
 DEFINITION SIGNATURE                                                         
  DEFinetime     : 06/02/20 17:28:17                                          
  CHANGETime     : 06/02/20 17:28:17                                          
  CHANGEUsrid    : CICSUSER                                                   
  CHANGEAGEnt    : CSDApi             CSDApi | CSDBatch                       
  CHANGEAGRel    : 0730                                                       
※ Jvmprofile: DFHOSGI, SIT의 JVMSPROFILEDIR 지정 디렉토리에 있는 DFHOSGI입니다.즉, jvmprofile이라는 파일이 JVM 속성 파일로 사용됩니다.
CEMT I JVMSERVER에서 Enable이면 OK.
I JVMS                                               
STATUS:  RESULTS - OVERTYPE TO MODIFY                
 Jvm(DFHJVMS ) Ena     Prf(DFHOSGI ) Ler(DFHAXRO )   
    Threadc(000) Threadl( 015 ) Cur(9965280)         

bundle 파일 설정용 디렉터리


USS에 bundle 파일을 배치하는 디렉터리를 만듭니다.
여기에서 /var/cicsts/cicsts56/CT56B4A1/bundles/라는 디렉터리를 만들 것입니다.

샘플 응용 프로그램 실행 확인


참조: Java samples: JCICS examples

샘플 항목 만들기


CICS Explorer 메뉴에서 창 - 설정을 선택하여 설정 창을 엽니다.
플러그인 개발 - 대상 플랫폼을 선택하고 "추가"를 누르십시오.

템플릿에서 원하는 CICS 버전을 선택합니다.여기서 CICS TS V5.6을 선택합니다.

추가된 CICS TS 5.6을 확인하고 적용합니다.

Java 원근 메뉴에서 파일 선택 - 새로 만들기 - 기타

CICS 번들 OSGi 샘플 선택

계속하다

바로 끝내다

예제 항목이 생성됩니다.

샘플 내용 확인


이 프로젝트는 가장 간단한 Hello World의 출처를 보기 위해 샘플 프로그램을 제공했다.
(com.ibm.cics.server.examples.hello 프로젝트(OSGi 번들)에 포함된 examples.hello.HelloCICSWorld.java)
HelloCICSWorld.java
package examples.hello;

import com.ibm.cics.server.CommAreaHolder;
import com.ibm.cics.server.Task;

public class HelloCICSWorld
{
    public static void main(CommAreaHolder CAH)
    {
        Task t = Task.getTask();
        if ( t == null )
            System.err.println("HelloCICSWorld example: Can't get Task");
        else
            t.out.println("Hello from a Java CICS application");
    }
}
JCICS의com.ibm.cics.server.작업을 사용하고 있습니다.
Task.out은 터미널 출력의 PrintWriter를 의미하기 때문에 터미널에 간단한 문자열을 보내는 논리입니다.
참조: Javadoc - Task
이 프로젝트의 META-INF/MANIFESt입니다.미드필드 확인해봐.
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Hello Plug-in
Bundle-SymbolicName: com.ibm.cics.server.examples.hello
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: J2SE-1.4,
 J2SE-1.5,
 JavaSE-1.6
Import-Package: com.ibm.cics.server;version="[1.0.0,2.0.0)"
CICS-MainClass: examples.hello.HelloCICSWorld, examples.hello.HelloWorld
CICS-MainClass의 지정에서main 방법이 있는 클래스를 지정합니다.여기서 지정한 클래스의main 방법은 CICS 프로그램으로 식별할 수 있습니다.
com.ibm.cics.server.examples.bundle이라는 CICS 번들 항목을 확인합니다.
META-INF/cics.CICS 번들 목록 편집기에서 xml을 열면 위의 OSGi 번들을 포함할 수 있습니다.

com.ibm.cics.server.examples.hello.osgibundle를 엽니다.

여기에 지정한 jvmserver 값을 확인하십시오.실행할 JVMSERVER 정의 이름을 지정해야 합니다.미리 준비된 곳에서 만든 JVMSERVER 정의의 이름을 기반으로 수정합니다.동일한 이름의 복제 예제 정의의 경우 DFHJVMS로 간주되므로 변경할 필요가 없습니다.

CICS에 애플리케이션 배포


CICS 배포는 CICS 번들 단위로 이루어집니다.
com.ibm.cics.server.examples.bundle 항목을 마우스 오른쪽 단추로 클릭하고 번들 항목을 z/OS UNIX 파일 시스템으로 내보내려면 누르십시오

파일 시스템으로 내보낼 특정 위치를 선택한 다음

이전에 만든bundle 파일 설정을 디렉터리로 지정한 후 종료

확인 메시지

번들 파일이 USS에 배치되었습니다.
CICS에서 제공하는 DFH$OSGI 그룹의 각 리소스를 적절한 그룹으로 복사합니다.
사용자 정의 BUNDLE은 "DFH$OSGB"를 정의하고 BUNDLEDIR 값을 번들 파일이 배치된 디렉토리 /var/cicsts/cicsts56/CT56B4A1/bundles/com.ibm.cics.server.examples.bundle_1.0.0 로 바꿉니다.
OVERTYPE TO MODIFY                                        CICS RELEASE = 0730
 CEDA  ALter Bundle( DFH$OSGB )                                              
  Bundle         : DFH$OSGB                                                  
  Group          : TAG$OSGI                                                  
  DEScription  ==> CICS bundle containing OSGi sample bundles                
  Status       ==> Enabled            Enabled | Disabled                     
  BUndledir    ==> /var/cicsts/cicsts56/CT56B4A1/bundles/com.ibm.cics.server.
  (Mixed Case) ==> examples.bundle_1.0.0                                     
               ==>                                                           
               ==>                                                           
               ==>                                                           
  BAsescope    ==>                                                           
  (Mixed Case) ==>                                                           
               ==>                                                           
               ==>                                                           
               ==>                                                           
 DEFINITION SIGNATURE                                                        
  DEFinetime     : 06/02/20 18:27:37                                         
  CHANGETime     : 06/02/20 18:27:37                                         
동적 관찰을 할 때의 축심점.
I BUNDLE                                                 
STATUS:  RESULTS - OVERTYPE TO MODIFY                    
 Bun(DFH$OSGB) Ena         Par(00003) Tar(00003)         
    Enabledc(00003) Bundlei(com.ibm.cics.server.exampl)  
참고로 CICS Explorer에서 자원 정의를 확인하면 BUNDLE 정의뿐만 아니라 BUNDLE에 포함된 BUNDLEPARTS도 확인할 수 있습니다.

예제 실행


이번에 Hello World의 예시를 실행하기 때문에 이 예시와 관련된 자원 정의를 추가로 설치합니다.
참조: Running the Hello World example
프로그램은 "DFJ$JHE2"와 사무 정의 "JHE2"를 정의합니다.실체인 Java 프로그램은 먼저 BUNDLE로 설치됩니다.
모두 DFH$OSGI에 제공되므로 복제 후 직접 설치합니다.
참고로 DFH$JHE2의 정의를 보겠습니다.
OBJECT CHARACTERISTICS                                    CICS RELEASE = 0730 
 CEDA  View PROGram( DFJ$JHE2 )                                               
  PROGram        : DFJ$JHE2                                                   
  Group          : TAG$OSGI                                                   
  DEScription    : OSGi Hello CICS world sample program                       
  Language       :                    CObol | Assembler | Le370 | C | Pli     
  RELoad         : No                 No | Yes                                
  RESident       : No                 No | Yes                                
  USAge          : Normal             Normal | Transient                      
  USElpacopy     : No                 No | Yes                                
  Status         : Enabled            Enabled | Disabled                      
  RSl            : 00                 0-24 | Public                           
  CEdf           : Yes                Yes | No                                
  DAtalocation   : Any                Below | Any                             
  EXECKey        : Cics               User | Cics                             
  COncurrency    : Required           Quasirent | Threadsafe | Required       
  Api            : Cicsapi            Cicsapi | Openapi                       
 REMOTE ATTRIBUTES                                                            
  DYnamic        : No                 No | Yes                                
  REMOTESystem   :                                                            
  REMOTEName     :                                                            
  Transid        :                                                            
  EXECUtionset   : Fullapi            Fullapi | Dplsubset                     
 JVM ATTRIBUTES                                                               
  JVM            : Yes                No | Yes                                
  JVMClass       : examples.hello.HelloCICSWorld                              
  (Mixed Case)   :                                                            
                 :                                                            
                 :                                                            
                 :                                                            
  JVMServer      : DFHJVMS                                                    
  JVMProfile     :                                                (Mixed Case)
 JAVA PROGRAM OBJECT ATTRIBUTES                                               
  Hotpool        : No                 No | Yes                                
...
이렇게 JVM: Yes, JVMClass:examples.hello.HelloCICSWorld, JVMser: DFHJVMS(BUNDLEPARTS에 설치된 클래스)를 지정합니다. ※사전 준비 중에 생성된 JVMserver 이름이 다른 경우 그에 따라 적절히 수정합니다.
이렇게 하면 자원이 다 갖추어지니 내가 실행해 보겠다.
CICS 터미널에서 JHE2 트랜잭션을 수행합니다.

Hello from a Java CICS application이라는 Java 프로그램에서 출력된 문자열을 표시합니다!
이로써 Java가 CICS 프로그램으로 실행되는지 확인합니다.

좋은 웹페이지 즐겨찾기