2015-03-30 74 views
4

在过去,我使用BPXBATCH从JCL执行java类文件。我想转向使用定制的JVM启动程序,正如IBM在以下链接中所建议的那样。 http://www.ibm.com/developerworks/systems/library/es-java-batchz.html从批处理执行java JCL

我写了一个hello world java程序,并在大型机上编译并将其打包成jar。

下面是一个使用BPXBATCH的JCL成员示例。

//LMGHWRLD JOB (MY,ACCOUNTING,INFO),'HELLO WORLD',     
// CLASS=A,MSGCLASS=H,REGION=512M,NOTIFY=&SYSUID      
//******************************************************************** 
//* Run Java under a UNIX System Service shell       
//******************************************************************** 
//STEP2 EXEC PGM=BPXBATCH,            
// PARM='SH java com.foo.bar.HelloWorld'     
//STDIN DD DUMMY              
//STDOUT DD PATH='/tmp/&SYSUID..bpxbatch.out',       
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),         
// PATHMODE=SIRWXU              
//STDERR DD PATH='/tmp/&SYSUID..bpxbatch.err',       
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),         
// PATHMODE=SIRWXU              
//STDENV DD *               
CLASSPATH=/u/myuid             
//********************************************************************* 
//* Copy HFS output files to SYSOUT, since BPXBATCH can only write  
//* STDOUT and STDERR to HFS files.          
//********************************************************************* 
//STEP3 EXEC PGM=IKJEFT01,DYNAMNBR=300,COND=EVEN      
//SYSTSPRT DD SYSOUT=*             
//HFSOUT DD PATH='/tmp/&SYSUID..bpxbatch.out'       
//HFSERR DD PATH='/tmp/&SYSUID..bpxbatch.err'       
//STDOUTL DD SYSOUT=*,DCB=(RECFM=VB,LRECL=133,BLKSIZE=137)    
//STDERRL DD SYSOUT=*,DCB=(RECFM=VB,LRECL=133,BLKSIZE=137)    
//SYSPRINT DD SYSOUT=*             
//SYSTSIN DD *               
OCOPY INDD(HFSOUT) OUTDD(STDOUTL)          
OCOPY INDD(HFSERR) OUTDD(STDERRL)          
//                  

我想用所有使用自定义JVM启动功能带来的上述文章中详细的。

上面的例子执行类文件,但文章似乎建议JAR文件是自定义JVM启动程序所必需的。以下是我创建的尝试和使用自定义JVM启动器的工作。

JAR文件是OMVS上的〜/ HelloWorld/HelloWorld.jar。

//LMGHWRLD JOB (MY,ACCOUNTING,INFO),'HELLO WORLD', 
// CLASS=A,MSGCLASS=H,REGION=0M,NOTIFY=&SYSUID  
//STEP1 EXEC PGM=JVMLDM60,       
// PARM='com.foo.bar.HelloWorld'  
//STEPLIB DD DSN=<MY.LIBRARY.PATH>,DISP=SHR 
//SYSPRINT DD SYSOUT=*        
//SYSOUT DD SYSOUT=*        
//STDOUT DD SYSOUT=*        
//STDERR DD SYSOUT=*        
//STDENV DD *          
. /etc/profile          
. ~/.profile           
export CLASSPATH=~/HelloWorld       
for i in ~/HelloWorld/*.jar; do      
    export CLASSPATH=$i:$CLASSPATH     
    done            
//  

目前这个作业的输出失败,102的特定输出CC低于:

JVMJZBL1001N JZOS batch Launcher Version: 2.3.0 2013-05-02  
JVMJZBL1002N Copyright (C) IBM Corp. 2005. All rights reserved. 
JVMJZBL1038E Child shell process exited with exit code: 1  
JVMJZBL1042E JZOS batch launcher failed, return code=102  

我区规模为20万,所以我不相信区域大小的问题。有什么我做错了吗?

+0

200,000是什么?你为什么这么想?在你的工作卡上你有0M。你尝试过200M吗? – 2015-03-30 21:12:01

+0

您可能想要查看Dovetailed Technologies运行的支持论坛。 (http://community.dovetail.com/forum/viewforum.php?f=1) – cschneid 2015-03-31 00:38:04

+0

你好Bill,200,000是我的TSO会话的区域大小。我以前有一个问题,我无法编译.java文件,所以我想我会在我的文章中提到它。我确实尝试用256M运行,没有运气。我仍在努力解决它。 – Burke9077 2015-03-31 10:59:58

回答

1

该解决方案最终成为STDENV DD声明的更改。以下代码应适用于指定区域发生更改的任何环境。

//STDENV DD *            
#                
# Java home location           
#                
export JAVA_HOME=/your/omvs/path/to/java/lib 
#                
# Standard java path updates         
#                
export PATH=/bin:"${JAVA_HOME}"/bin       
LIBPATH=/lib:/usr/lib:"${JAVA_HOME}"/bin      
LIBPATH="$LIBPATH":"${JAVA_HOME}"/lib/s390     
LIBPATH="$LIBPATH":"${JAVA_HOME}"/lib/s390/j9vm    
LIBPATH="$LIBPATH":"${JAVA_HOME}"/bin/classic     
export LIBPATH="$LIBPATH":         
#                
# Define location (and version if applicable) of jar home  
#                
APP_HOME=/var/location/of/your/jar          
CLASSPATH=$APP_HOME:"${JAVA_HOME}"/lib:"${JAVA_HOME}"/lib/ext 
# Add Application required jars to end of CLASSPATH   
for i in "${APP_HOME}"/*.jar; do        
    CLASSPATH="$CLASSPATH":"$i"        
    done              
export CLASSPATH="$CLASSPATH":        
//               
+0

直觉是你应该已经能够从“命令行”** TSO ISH **来测试它了吗? – mckenzm 2015-05-12 19:24:47

+0

这确实在ishell/omvs中运行。我需要它是一个批处理作业,用于作业调度,活动假脱机输出以及sdsf中的可见性。 – Burke9077 2015-05-12 19:26:33

+1

了解,但env会根据帐户使用相同? BPXBATCH只是一个背景ISH?只从这里的疑难解答方面思考。例如,我经常需要在HFS上运行“查找”。在这种情况下好问题。 – mckenzm 2015-05-12 19:31:33