원격 Java 웹 응용 프로그램을 통해 WLST에서 서버 다시 시작 명령을 실행하려고합니다. JSch로 WLST 명령 호출
이
내가 실행하기 위해 노력하고있어입니다 : 내가 사용StringBuilder sb = new StringBuilder();
sb.append("/u01/app/oracle/jdk1.8.0_65/bin/./java -cp /u01/app/oracle/product/Oracle_Home/wlserver/server/lib/weblogic.jar weblogic.WLST");
sb.append(";connect(\'weblogic\',\'" + consolePass + "\',\'" + fullAddress + "\')");
sb.append(";domainRuntime()");
sb.append(";cd(\'/ServerLifeCycleRuntimes/" + serverName + "\')");
sb.append(";cmo.shutdown())");
sb.append(";start(" + serverName + ",'Server')");
String command = sb.toString();
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setUserInfo(new OracleUserInfo(pass));
session.connect();
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0)
break;
System.out.print(new String(tmp, 0, i));
}
if (channel.isClosed()) {
if (in.available() > 0)
continue;
System.out.println("exit-status: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
}
}
channel.disconnect();
session.disconnect();
을 ';' 여러 명령을 실행해야한다고 생각했기 때문에 명령을 분리해야합니다. -c : 라인 0 : 예기치 않은 토큰 'weblogic','password','t3://host:7001''
/u01/app/oracle/jdk1.8.0_65/bin/ 근처의 구문 오류
bash: -c: line 0:
불행히도, 2
bash는 줄에 구문 오류가 있습니다. (weblogic, password, t3 : // host : 7001) '
/web-server/
첫 번째 줄 뒤에 \n
을 추가하려고 시도했는데 그 결과 첫 번째 줄이 실행되었으므로 (WLST를 입력 했음) 나머지 명령은 없었습니다.
StringBuilder sb = new StringBuilder();
sb.append("/u01/app/oracle/jdk1.8.0_65/bin/./java -cp /u01/app/oracle/product/Oracle_Home/wlserver/server/lib/weblogic.jar weblogic.WLST\n");
sb.append(";connect(\'weblogic\',\'" + consolePass + "\',\'" + fullAddress + "\')\n");
sb.append(";domainRuntime()\n");
sb.append(";cd(\'/ServerLifeCycleRuntimes/" + serverName + "\')\n");
sb.append(";cmo.shutdown())\n");
String command = sb.toString();
결과 :
초기화 웹 로직 스크립팅 도구를 사용할 수있는 명령
WLS에 도움 (WLST) ... 웹 로직 서버 관리 스크립팅 쉘
입력 도움말 (에
에 오신 것을 환영합니다) :/오프라인>
명령을 수동으로 테스트했는데 효과가있었습니다. 이 문제는 다른 셸 인터페이스를 연 이후로 WLST 인터페이스가있는 JSch의 것 같습니다.
JSST로 WLST 명령을 어떻게 실행할 수 있습니까?
PS1 : 배포 할 동일한 응용 프로그램에 기능이 있으므로 JSch 코드가 작동하는 것으로 알고 있습니다. 기본적으로 jscp를 실행하여 전쟁을 업로드 한 다음 ssh로 weblogic.Deployer -deploy 명령을 실행합니다.
PS2 : 나는 그것을 수행하기 위해 .py 스크립트가 있지만 지금은 서버에서 실행해야합니다. 임시 폴더에 jscp를 수행하고 스크립트를 실행 한 다음 삭제하는 방법에 대해 생각하고 있습니다. 하지만 JSST로 WLST에서 여러 명령을 실행하는 방법을 알고 싶습니다.
미리 감사드립니다.
UPDATE
코드 작업 (감사 마틴)
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
InputStream in = channel.getInputStream();
OutputStream out = channel.getOutputStream();
((ChannelExec) channel).setErrStream(System.err);
channel.connect();
for (String wlstCommand : wlstCommands) {
out.write((wlstCommand).getBytes());
}
out.flush();
고맙습니다. 그것은 효과가있다! 예, WLST 명령입니다! – fsakiyama