3

最近、JBoss 7.1.3-Final から 7.2.0-Final にアップグレードしました。Java CLI パブリック API を使用するアプリケーションの 1 つをアップグレードしたため、CLI API を介して接続が終了するたびに NullPointerExceptions がスローされます。

以下は、JBoss CLI への接続をセットアップして閉じるためのコードです。

private CommandContext ctx;
private ModelControllerClient client; 

public JBossCLITool() {
   try {
        ctx = CommandContextFactory.getInstance().newCommandContext();
    } catch(CliInitializationException e) {
        throw new IllegalStateException("Failed to initialize CLI context", e);
    }
}

public void establishConnection() {
    try {
        ctx.connectController("localhost", 9999);
        client = ctx.getModelControllerClient();
    } catch (CommandLineException e) {
        LOG.debug(e.toString());
    }
} 

public void terminateConnection() {
    try {
        if (!ctx.isTerminated()){
            ctx.terminateSession();
        }
    } catch (Exception e) {
        LOG.debug(e.toString());
    }
}

ctx.terminateSession() を呼び出すと、次の例外がスローされます。

13:46:58,691 ERROR [org.jboss.remoting.handler-errors] (Remoting "cli-client" read-1) Close handler threw an exception: java.lang.NullPointerException
at org.jboss.as.cli.impl.CommandContextImpl.handleClose(CommandContextImpl.java:1206) [org-jboss-as-jboss-as-cli-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.cli.impl.CLIModelControllerClient$4.handleClose(CLIModelControllerClient.java:156) [org-jboss-as-jboss-as-cli-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.cli.impl.CLIModelControllerClient$4.handleClose(CLIModelControllerClient.java:153) [org-jboss-as-jboss-as-cli-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.remoting3.spi.SpiUtils.safeHandleClose(SpiUtils.java:54) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.AbstractHandleableCloseable$CloseHandlerTask.run(AbstractHandleableCloseable.java:501) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.AbstractHandleableCloseable.runCloseTask(AbstractHandleableCloseable.java:406) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.AbstractHandleableCloseable.closeComplete(AbstractHandleableCloseable.java:277) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.ConnectionImpl.access$000(ConnectionImpl.java:38) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.ConnectionImpl$1.handleClose(ConnectionImpl.java:55) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.ConnectionImpl$1.handleClose(ConnectionImpl.java:53) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.SpiUtils.safeHandleClose(SpiUtils.java:54) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.AbstractHandleableCloseable$CloseHandlerTask.run(AbstractHandleableCloseable.java:501) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.AbstractHandleableCloseable.runCloseTask(AbstractHandleableCloseable.java:406) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.spi.AbstractHandleableCloseable.closeComplete(AbstractHandleableCloseable.java:277) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.remote.RemoteConnectionHandler.handleConnectionClose(RemoteConnectionHandler.java:117) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:78) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:45) [org-jboss-remoting3-jboss-remoting-3.2.14.GA.jar:3.2.14.GA]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.ssl.JsseConnectedSslStreamChannel.handleReadable(JsseConnectedSslStreamChannel.java:180) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72) [org-jboss-xnio-xnio-api-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.nio.NioHandle.run(NioHandle.java:90) [org-jboss-xnio-xnio-nio-3.0.7.GA.jar:3.0.7.GA]
at org.xnio.nio.WorkerThread.run(WorkerThread.java:187) [org-jboss-xnio-xnio-nio-3.0.7.GA.jar:3.0.7.GA]

7.1.3 API と JBoss AS を使用すると、同じコードで問題なく動作します。7.2 でも、接続は正しく閉じられているようです (terminateSession() を呼び出した後は、新しい接続を確立するまで、CLI への呼び出しを行うことはできません)。

私は JBoss コミュニティで同じ質問をしましたが、他の誰かがそれを見てくれることを期待して繰り返しました。リンクは次のとおりです: https://community.jboss.org/message/828608

4

1 に答える 1