2017-09-25 16 views
2

JBoss 6.1.0_final에서 WildFly 10으로 마이그레이션 중입니다. 특정 조건에서 서버를 중지하고 싶습니다. like :프로그래밍 방식으로 WildFly 10 중지

if (condition == true) 
    System.exit(1); 

위의 코드는 JBoss에서 정상적으로 작동하며 서버를 즉시 종료합니다. 그러나 WildFly10에서 같은 코드를 실행하면 서버가 즉시 중지되지 않습니다.

셧다운 신호를 보낸 다음 언 바운드 datasource, JMX 등등을 언 바운드합니다. MBeans에서 수행 할 수 있지만 여기서는 작동하지 않는 것으로 나타났습니다 : https://developer.jboss.org/thread/198579.

PARAMS과 설명 다른 길이 내가 바로 내 WildFly10 서버를 중지 할

이이 같은 몇 가지 오류가 있습니다. 어떤 사람이 이런 짓을 한거야?

+0

왜 jboss-cli 또는 관리 API를 사용하지 않습니까? – ehsavoie

+0

프로그래밍 방식으로 중지하고 싶습니다. –

+0

Hum, 어떻게 휴식 API를 호출하거나 프로그램이 아닌 클라이언트 도우미 java 코드를 사용하고 있습니까? 위의 코드와 함께 – ehsavoie

답변

1

다음은 (단지 예외를 처리) 작동합니다 :

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); 
ObjectName objectName = new ObjectName("jboss.as:management-root=server"); 
mBeanServer.invoke(objectName, "shutdown", new Object[] { false, 0 }, 
     new String[] { boolean.class.getName(), int.class.getName() }); 
+0

오류가 사라지고 서버가 처리를 중지합니다. ActiveMQ와 관련된 모든 스레드가 시작된 이후로 Java가 계속 실행됩니다. 1000 ms 후에 타임 아웃 예외가 발생합니다. 그리고 서버는 여전히 실행 중입니다. :-( –

0

을 직접 JBoss에 CLI 명령을 사용하여 제이보스 서버를 중지 시도 할 수 있습니다. 서버를 중지하려는 동안 서버가 실행 중인지 확인하십시오.

try { 
    String jbossBinDir = System.getProperty("jboss.server.base.dir").replace("standalone", "bin"); 
    Runtime.getRuntime().exec(jbossBinDir+"/" + "jboss-cli.bat --connect --controller=192.168.1.2 -c command=:shutdown"); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    }