Iseries上的Java IFSFile在PC上测试
我正在尝试开发一个Java类,该类将用于iSeries上的RPG程序。此类将使用IFSFile管理文件。问题是我不知道如何在我的电脑上测试这个(如果可能的话) 我的代码类似于:Iseries上的Java IFSFile在PC上测试,java,testing,ibm-midrange,Java,Testing,Ibm Midrange,我正在尝试开发一个Java类,该类将用于iSeries上的RPG程序。此类将使用IFSFile管理文件。问题是我不知道如何在我的电脑上测试这个(如果可能的话) 我的代码类似于: import java.io.BufferedReader; import java.io.IOException; import com.ibm.as400.access.AS400; import com.ibm.as400.access.AS400SecurityException; import com.ibm
import java.io.BufferedReader;
import java.io.IOException;
import com.ibm.as400.access.AS400;
import com.ibm.as400.access.AS400SecurityException;
import com.ibm.as400.access.IFSFile;
import com.ibm.as400.access.IFSFileReader;
(...)
AS400 system = new AS400("AS400SystemName");
IFSFile file = new IFSFile(system, "/File1");
BufferedReader reader = null;
try {
reader = new BufferedReader(new IFSFileReader(file));
} catch (AS400SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Read one line of the file
String line1 = null;
try {
line1 = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
// Print line
System.out.println(line1);
// Close reader
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}</pre>
导入java.io.BufferedReader;
导入java.io.IOException;
导入com.ibm.as400.access.as400;
导入com.ibm.as400.access.AS400SecurityException;
导入com.ibm.as400.access.IFSFile;
导入com.ibm.as400.access.IFSFileReader;
(...)
AS400系统=新AS400(“AS400SystemName”);
IFSFile file=新的IFSFile(系统,“/File1”);
BufferedReader reader=null;
试一试{
reader=newbufferedreader(newifsfilereader(文件));
}捕获(AS400SecurityException e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
//读取文件的一行
字符串line1=null;
试一试{
line1=reader.readLine();
}捕获(IOE异常){
e、 printStackTrace();
}
//打印行
系统输出打印项次(第1行);
//近距离阅读
试一试{
reader.close();
}捕获(IOE异常){
e、 printStackTrace();
}
我不太了解iSeries,我有一些疑问:
提前感谢。我建议您将AS400对象的主机名、用户id和密码参数定义为字段(或常量),并根据其运行方式进行分配 当你调试的时候
String host = "AS400SystemName";
String user = "youruserid";
String pass = "yourpassword";
AS400 system = new AS400(host, user, pass);
在IBM i主机上运行该类时,请定义如下变量:
String host = "localhost";
String user = "*CURRENT";
String pass = "*CURRENT";
您可能还希望使用将AS400对象上的GUI available属性设置为false。这样,如果传递了错误的用户id或密码,将引发异常,而不是弹出GUI登录窗口
一般来说,在PC上运行的功能在主机上也同样有效。- 在回答问题1(用户id和密码问题)时,请确保在iSeries端的类路径中使用JT400Native.jar而不是JT400.jar。当使用JT400Native.jar时,当使用com.ibm.as400.access类时,它应该获取当前运行作业的用户id和密码
- 在对问题2的回答中,如果没有iSeries对话,您无法测试您的程序。或者,您可以从普通文件输入流读取或写入普通文件输出流,而不是IFSFile。这至少可以让您测试代码的业务逻辑。但是,当需要测试com.ibm.as400.access类时,如果没有对真正的iSeries的访问,您就无法进行测试。一个模拟器会很好,但是架构是如此的不同,我不知道有谁做了一个
AS400
对象,即可使用当前用户凭据。或者,您可以使用newAS400(“localhost”、“当前”、“当前”)来构造AS400对象
使用当前用户信息。就我个人而言,我总是使用纯java JT400来避免它与JT400Native.jar之间的任何差异。