読者です 読者をやめる 読者になる 読者になる

復習日記

勤務時間内で理解できなかったことやつまづいたことをまとめていく予定。

WildFlyでMDBの無効化

WildFly上にデプロイしたwarの中のMDBだけを止めたいといった需要があるっぽい。

やり方は、${WildFlyのホームディレクトリ}/bin/jboss-cli.batを使用する。

linuxっぽく、lsしながら目的のMDBのとこまで行く。

You are disconnected at the moment. Type 'connect' to connect to the server or '
help' for the list of supported commands.
[disconnected /] connect
[standalone@localhost:9990 /] ls
core-service                management-minor-version=1
deployment                  name=game-pc
deployment-overlay          namespaces=[]
extension                   process-type=Server
interface                   product-name=undefined
path                        product-version=undefined
socket-binding-group        profile-name=undefined
subsystem                   release-codename=Kenny
system-property             release-version=8.1.0.CR2
launch-type=STANDALONE      running-mode=NORMAL
management-major-version=2  schema-locations=[]
management-micro-version=0  server-state=running
[standalone@localhost:9990 /] cd deployment
[standalone@localhost:9990 deployment] ls
wildfly-helloworld-mdb.war
[standalone@localhost:9990 deployment] cd wildfly-helloworld-mdb.war
[standalone@localhost:9990 deployment=wildfly-helloworld-mdb.war] ls
subdeployment
subsystem
content=[{"path" => "deployments\\wildfly-helloworld-mdb.war","relative-to" => "
jboss.server.base.dir","archive" => false}]
enabled=true
name=wildfly-helloworld-mdb.war
persistent=false
runtime-name=wildfly-helloworld-mdb.war
status=OK
[standalone@localhost:9990 deployment=wildfly-helloworld-mdb.war] cd subsystem=ejb3
[standalone@localhost:9990 subsystem=ejb3] ls
entity-bean             singleton-bean          stateless-session-bean
message-driven-bean     stateful-session-bean
[standalone@localhost:9990 subsystem=ejb3] cd message-driven-bean=HelloWorldQueueMDB
[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB]

現在の階層でどんなことができるかは:(コロン)打つと候補が出てくる。

[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB] :
read-attribute              read-resource-description
read-children-names         start-delivery
read-children-resources     stop-delivery
read-children-types         undefine-attribute
read-operation-description  whoami
read-operation-names        write-attribute
read-resource
[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB]

とりあえず、やりたいことはstop-deliveryなので打つ

[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB] :stop-delivery
{"outcome" => "success"}
[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB]

味気ないけど、これでMDBが止まった。

キューが消費されないので、どんどん溜まっていく

MDBを再開したくなったら、start-delivery

溜まっていたキューが一気に消費されます。。

[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB] :start-delivery
{"outcome" => "success"}
[standalone@localhost:9990 message-driven-bean=HelloWorldQueueMDB]

いちいち毎回深い階層まで辿っていくのは面倒なので、一発で行けるコマンドを用意しておくと良いかもしれない。

  • stop-delivery
/deployment=wildfly-helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldQueueMDB:stop-delivery
  • start-delivery
/deployment=wildfly-helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldQueueMDB:start-delivery

バッチ実行やスケジューラに登録したいとかいう場合は、以下のようにする

C:\Temp\wildfly-8.1.0.CR2\bin>jboss-cli.bat -c --commands="/deployment=wildfly-helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldQueueMDB:stop-delivery"
{"outcome" => "success"}
続行するには何かキーを押してください . . .

C:\Temp\wildfly-8.1.0.CR2\bin>

テキストファイルにコマンドを羅列してそれを読み込ませる方法もある。

  • test.txt
connect
/deployment=wildfly-helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldQueueMDB:start-delivery

「続行するには何かキーを押してください . . .」っていってくるのがうざいが、、、まぁ気にしない。

C:\Temp\wildfly-8.1.0.CR2\bin>jboss-cli.bat --file=test.txt
{"outcome" => "success"}
続行するには何かキーを押してください . . .

C:\Temp\wildfly-8.1.0.CR2\bin>