復習日記

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

node.js入れてみる

環境

mac

入れるもの

  • nodebrew
  • npm
  • node
  • gulp

参考、というかまんま

Node.jsとgulpをインストールして使うまでの入門記事 | コムテブログ

nodebrew

node本体のバージョン管理ツールwindowsの場合はnodist)

nodeを複数バージョン切り替えて使用できる

$ curl -L git.io/nodebrew | perl - setup

自分の環境にはすでに入っていたっぽい

nodeも入っていた

$ nodebrew ls
v0.12.0

current: v0.12.0
$ node -v
v0.12.0
$ 

npm

nodeのモジュールのバージョンをpackage.json使って管理するのがnpm

node.jsインストールするとついてくる

mkdir sample-project
cd sample-project
npm init

上記コマンド実行するとsample-project配下にpackage.jsonがつくられる

{
  "name": "sample-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

npm install パッケージ名 でインストールできる

-gつけるとグローバルインストール

何もつけないとプロジェクト内にインストール

gulp

フロントエンド用の便利ツール

プロジェクト外からもパスを通しておきたいのでグローバルインストールもしておく。

npm install -g gulp
npm install gulp

$ gulp -v
[00:33:35] CLI version 3.9.0
[00:33:35] Local version 3.9.0

gulp plugin

プラグインいろいろある

jsのminifyや画像ファイルの圧縮など

ブラウザの同期とリロードのgulp watchが便利かな

npm install gulp-cssbeautify

gulpfile.jsを用意

var gulp = require('gulp'),
    cssbeautify = require('gulp-cssbeautify');

gulp.task('cssbeautify', function() {
    return gulp.src('css/style.css')
        .pipe(cssbeautify())
        .pipe(gulp.dest('css'));;
});

gulp.task('hello', function() {
     console.log('hello world');
});

元のcss/style.css

h1{
font-size: 20px;
color: blue;
}

gulp コマンドを打つと

gulp cssbeautify

cssが整形される

h1 {
    font-size: 20px;
    color: blue;
}

先ほどのgulpfile.jsの定義の通り、gulp helloと打つとhello worldが返ってきます。

postgresqlのjson型をdomaで扱う

この記事を見ると直JDBCなら、postgresqljson型にデータを登録できるらしい。

PostgreSQLのJSON列にJavaからデータを登録する - Symfoware

- insert文の実行→doma側がjson型を認識できないので、失敗する。無念。

2015/6/10追記

domaのデフォルトメソッド内でビルダ使って、postgresqlの関数to_json使えばjson型でもinsertできました。

以下、検証結果。

posgresqlのjson型へのinsertサンプル

  • Entityクラス
package example.entity;

import org.seasar.doma.Column;
import org.seasar.doma.Entity;
import org.seasar.doma.Id;
import org.seasar.doma.Table;

/**
 */
@Entity(listener = CustomerListener.class)
@Table(name = "customer")
public class Customer {

    /** */
    @Id
    @Column(name = "id")
    String id;

    /** */
    @Column(name = "first_name")
    String firstName;

    /** */
    @Column(name = "last_name")
    String lastName;

    /** */
    @Column(name = "jsondata")
    String jsondata;

    /** 
     * getter、setterは省略
     */
}
  • daoインタフェース
package example.dao;

import org.seasar.doma.Dao;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.builder.InsertBuilder;
import example.entity.Customer;

/**
 */
@Dao
@DomaRepository
public interface CustomerBuilderDao {


    /**
     * @param entity
     * @return affected rows
     */
    default int insert(Customer entity) {
        Config config = Config.get(this);

        InsertBuilder builder = InsertBuilder.newInstance(config);
        builder.sql("insert into Customer");
        builder.sql("(id, first_name, last_name, jsondata)");
        builder.sql("values (");
        builder.param(String.class, entity.getId()).sql(", ");
        builder.param(String.class, entity.getFirstName()).sql(", ");
        builder.param(String.class, entity.getLastName()).sql(", ");
        builder.sql(" to_json(");
        builder.param(String.class, entity.getJsondata()).sql("::text)");
        builder.sql(")");
        return builder.execute();
    }
}

spring boot + doma2 + postgresql9.4

はじめに

仕事で使うためちょっとした挙動確認。

doma-genをMavenから動かせるようにするっていうのが目的でした。

環境

サンプルソース

github.com

あくまで設定ファイルの参考用としてください。

補足

ORマッパーです。doma2.x系はJDK8対応されており、doma1.x系のseasarプロジェクトとは別のようです。

apt(Annotation Processing Tool)といって、アノテーション付きのコードを元に、自動的にコードを生成・検証してくれる仕組みを持っています。

MyBatisだとアプリ実行時にsqlファイルがないよーとか構文変だよーとか怒られますが、domaの場合、コンパイル時に怒ってくれます。

daoインタフェースのメソッドSQLファイルが1対1です。分かりやすい。

daoの実装クラスはdomaによってapt_generated配下に自動生成されます。

eclipseプラグインです。

daoとsqlファイル間をeclipse上で右クリックメニューから行ったり来たりできます。

対応するsqlファイルがない場合、sqlファイル作成ダイアログを開いてくれます。

javaのentityクラスとdaoクラスを自動生成してくれるantツールです。

今回使用するプロジェクトはMavenでビルドします。

  • ant

doma-genはantで動きます。Mavenから呼び出す感じにしますが、antの設定は必要です。

セットアップ

  • JDK8

公式からダウンロードしてインストールします。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  • Spring Boot

pom.xmlに依存ライブラリとして記載し、Mavenから落としてきます。

pom.xmlに依存ライブラリとして記載し、Mavenから落としてきます。

公式からダウンロードして解凍します。

http://mergedoc.osdn.jp/

公式からダウンロードしてインストールします。

http://www.enterprisedb.com/products-services-training/pgdownload#windows

  • Maven3.2.1

公式からダウンロードして解凍します。 コマンドプロンプトからMaven実行するので、PATHを通しておきます。

https://maven.apache.org/download.cgi

  • ant

pleadesに付属していました。 PATHを通しておかないとdoma-gen実行時に怒られるので通しておきます。

${pleiadesインストールディレクトリ}\eclipse\plugins\org.apache.ant_1.9.2.v201404171502\bin

「ヘルプ」→「新規ソフトウェアのインストール」から

http://dl.bintray.com/domaframework/eclipse/

プロジェクトを右クリック→「プロパティ」→「Javaコンパイラー」→「注釈処理」

「プロジェクト固有の設定を可能にする」にチェック

f:id:raimus0904:20150608005609j:plain

「注釈処理」→「ファクトリーパス」

「プロジェクト固有の設定を可能にする」にチェック

domaのjarを追加します。mavenレポジトリにありますので外部jarとして追加

f:id:raimus0904:20150608005625j:plain

daoインタフェースとsqlファイル間をeclipseの右クリック→「doma」からジャンプできるようになります。

[DOMA4019] SQLファイル[META-INF/../select.sql]がクラスパスから見つかりませんでした

上記エラーが発生したら、ビルドパスの設定でsrc/main/resourceのインクルードから除外パターンを削除します。下記を参照。

m2eでDomaを使う場合に気をつけること - taediumの日記

ビルドパスの設定から、src/main/resourceとsrc/main/resourceの出力先フォルダを同じにするようにします。

f:id:raimus0904:20150608042540j:plain

pom.xmlに依存ライブラリとして記載し、Mavenから落としてきます。

Mavenからmaven-antrun-pluginを使ってdoma-genのantタスクを実行します。

下記のコマンドを使います。詳細はGitHubに上げてるソースを確認してください。

mvn antrun:run

eclipse上からだと上手くいかず、コマンドラインから実行しないと動きません。

何故かは良く分からず。

MacBook Airを買ってみて

Macかっこいいですねー。

次、スマホ買い換えるときはiphoneにしよーっと

ただまぁ、今までWindowsしか使ってこなかったのでてこずってます。

よく使いそうなもの

ショートカット

  • スクリーンショット(全体):「command」 + 「shift」 + 「3」

  • スクリーンショット(アクティブ):「command」 + 「shift」 + 「4」

  • Spotlight検索:「control」 + 「space」

  • カナ入力:「shift」 + 「かな」

  • かな変換:「control」 + 「J」

  • カナ変換:「control」 + 「K」

  • 全角英数変換:「control」 + 「L」

  • 半角英数変換:「control」 + 「;」

  • Mission Control:「F3」

  • アプリ切り替え:「command 」+「tab」

  • Dock の表示/非表示を切り替え:「option」 + 「command」+ 「D」

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>

wildflyのstandaloneとdomainモードの違い

standaloneモード

名前の通り1台構成

設定ファイルはstandalone-*.xmlに記述。

domainモード

  • ドメインコントローラ⇒管理プロセス

  • ホストコントローラ×N⇒サーバープロセス

ドメインコントローラを操作するだけで、それに従属する複数のホスト(サーバー)を管理できますよーという仕組み。

ドメインで共通の設定はdomain.xmlに記述。設定内容はstandalone-*.xmlとだいたい同じになる。

ホスト毎に違う設定はhost.xmlに記述。

あと大きく違うのは、デプロイの方法。

standaloneでは、Deployment Scanner(デプロイメントスキャナ)という設定が入ってる。

<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
    <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
</subsystem>

これは、$JBOSS_HOME/standalone/deploymentsディレクトリを 5 秒間隔でスキャンして、何か変更があればデプロイするというものです。

standaloneモードではdeploymentsディレクトリにwarを配置するだけでデプロイしてくれますが、domainモードではそういうことできない。CLIやwebの管理コンソールからデプロイしなきゃならない。

ときどきローカルでeclipsenetbeans使って開発してるとき、wildflyがうまく動かなくなるのは、このデプロイメントスキャナの挙動が原因じゃないかな、と思ってたりする。

wildflyでActiveMQを使ってみる②

仕事仲間がブリッジ設定しなくてもActiveMQ使う設定見つけてくれたので追記しておきます。

JNDIのlookupを変えてます

package org.jboss.as.quickstarts.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.annotation.Resource;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HelloWorldMDBServletClient")
public class HelloWorldMDBServletClient extends HttpServlet {

    private static final long serialVersionUID = -8314035702649252239L;
    private static final int MSG_COUNT = 5;
    @Resource(lookup = "java:/AMQConnectionFactory") 
    private ConnectionFactory cf;  
    @Resource(lookup  = "java:/queue/JMSBridgeTargetQ")
    private Queue queue;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.write("<h1>Quickstart: Example demonstrates the use of <strong>JMS 2.0</strong> and <strong>EJB 3.2 Message-Driven Bean</strong> in WildFly 8.</h1>");
        try {
            Connection connection = cf.createConnection();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = session.createProducer(queue);
            Destination destination = producer.getDestination();
            TextMessage message = session.createTextMessage();
            out.write("<p>Sending messages to <em>" + destination + "</em></p>");
            out.write("<h2>Following messages will be send to the destination:</h2>");
            for (int i = 0; i < MSG_COUNT; i++) {
                message.setText("This is message "+ (i + 1));
                producer.send(destination, message);
                out.write("Message (" + i + "): " + message.getText() + "</br>");
            }
            out.write("<p><i>Go to your WildFly Server console or Server log to see the result of messages processing</i></p>");           
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (out != null) {
                out.close();
            }
        }
    }
}
  • キュー取り出し側(MDB)

変更なし。

package org.jboss.as.quickstarts.mdb;

import java.util.logging.Logger;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(name = "HelloWorldQueueMDB", activationConfig = {
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "JMSBridgeTargetQ"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
public class HelloWorldQueueMDB implements MessageListener {
    private final static Logger LOGGER = Logger.getLogger(HelloWorldQueueMDB.class.toString());
    public void onMessage(Message rcvMessage) {
        TextMessage msg = null;
        try {
            if (rcvMessage instanceof TextMessage) {
                msg = (TextMessage) rcvMessage;
                LOGGER.info("Received Message from queue: " + msg.getText());
            } else {
                LOGGER.warning("Message of wrong type: " + rcvMessage.getClass().getName());
            }
        } catch (JMSException e) {
            throw new RuntimeException(e);
        }
    }
}
  • standalone-full.xml

default-bindingsのとこを変更したのと、bridgeの設定を削除しています。

ちなみに特に触れていなかったですが、使用しているwildflyは「wildfly-8.1.0.CR2」です。

<?xml version="1.0" ?>

<server xmlns="urn:jboss:domain:2.1">

    <extensions>
        <extension module="org.jboss.as.clustering.infinispan"/>
        <extension module="org.jboss.as.connector"/>
        <extension module="org.jboss.as.deployment-scanner"/>
        <extension module="org.jboss.as.ee"/>
        <extension module="org.jboss.as.ejb3"/>
        <extension module="org.jboss.as.jacorb"/>
        <extension module="org.jboss.as.jaxrs"/>
        <extension module="org.jboss.as.jdr"/>
        <extension module="org.jboss.as.jmx"/>
        <extension module="org.jboss.as.jpa"/>
        <extension module="org.jboss.as.jsf"/>
        <extension module="org.jboss.as.jsr77"/>
        <extension module="org.jboss.as.logging"/>
        <extension module="org.jboss.as.mail"/>
        <extension module="org.jboss.as.messaging"/>
        <extension module="org.jboss.as.naming"/>
        <extension module="org.jboss.as.pojo"/>
        <extension module="org.jboss.as.remoting"/>
        <extension module="org.jboss.as.sar"/>
        <extension module="org.jboss.as.security"/>
        <extension module="org.jboss.as.transactions"/>
        <extension module="org.jboss.as.webservices"/>
        <extension module="org.jboss.as.weld"/>
        <extension module="org.wildfly.extension.batch"/>
        <extension module="org.wildfly.extension.io"/>
        <extension module="org.wildfly.extension.undertow"/>
    </extensions>


    <management>
        <security-realms>
            <security-realm name="ManagementRealm">
                <authentication>
                    <local default-user="$local" skip-group-loading="true"/>
                    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
                <authorization map-groups-to-roles="false">
                    <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
                </authorization>
            </security-realm>
            <security-realm name="ApplicationRealm">
                <authentication>
                    <local default-user="$local" allowed-users="*" skip-group-loading="true"/>
                    <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
                <authorization>
                    <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
                </authorization>
            </security-realm>
        </security-realms>
        <audit-log>
            <formatters>
                <json-formatter name="json-formatter"/>
            </formatters>
            <handlers>
                <file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>
            </handlers>
            <logger log-boot="true" log-read-only="false" enabled="false">
                <handlers>
                    <handler name="file"/>
                </handlers>
            </logger>
        </audit-log>
        <management-interfaces>
            <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
                <socket-binding http="management-http"/>
            </http-interface>
        </management-interfaces>
        <access-control provider="simple">
            <role-mapping>
                <role name="SuperUser">
                    <include>
                        <user name="$local"/>
                    </include>
                </role>
            </role-mapping>
        </access-control>
    </management>

    <profile>
        <subsystem xmlns="urn:jboss:domain:logging:2.0">
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <named-formatter name="COLOR-PATTERN"/>
                </formatter>
            </console-handler>
            <periodic-rotating-file-handler name="FILE" autoflush="true">
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="server.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
            <logger category="org.apache.tomcat.util.modeler">
                <level name="WARN"/>
            </logger>
            <logger category="org.jboss.as.config">
                <level name="DEBUG"/>
            </logger>
            <logger category="sun.rmi">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb.config">
                <level name="ERROR"/>
            </logger>
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
            <formatter name="PATTERN">
                <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <formatter name="COLOR-PATTERN">
                <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:batch:1.0">
            <job-repository>
                <in-memory/>
            </job-repository>
            <thread-pool>
                <max-threads count="10"/>
                <keepalive-time time="30" unit="seconds"/>
            </thread-pool>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:datasources:2.0">
            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
            <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:ee:2.0">
            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
            <concurrent>
                <context-services>
                    <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>
                </context-services>
                <managed-thread-factories>
                    <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
                </managed-thread-factories>
                <managed-executor-services>
                    <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/>
                </managed-executor-services>
                <managed-scheduled-executor-services>
                    <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/>
                </managed-scheduled-executor-services>
            </concurrent>
            <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:/AMQConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:ejb3:2.0">
            <session-bean>
                <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/>
                <singleton default-access-timeout="5000"/>
            </session-bean>
            <mdb>
                <resource-adapter-ref resource-adapter-name="activemq-rar"/>
                <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
            </mdb>
            <pools>
                <bean-instance-pools>
                    <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                    <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                </bean-instance-pools>
            </pools>
            <caches>
                <cache name="simple"/>
                <cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/>
            </caches>
            <passivation-stores>
                <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/>
            </passivation-stores>
            <async thread-pool-name="default"/>
            <timer-service thread-pool-name="default" default-data-store="default-file-store">
                <data-stores>
                    <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>
                </data-stores>
            </timer-service>
            <remote connector-ref="http-remoting-connector" thread-pool-name="default"/>
            <thread-pools>
                <thread-pool name="default">
                    <max-threads count="10"/>
                    <keepalive-time time="100" unit="milliseconds"/>
                </thread-pool>
            </thread-pools>
            <iiop enable-by-default="false" use-qualified-name="false"/>
            <default-security-domain value="other"/>
            <default-missing-method-permissions-deny-access value="true"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:io:1.1">
            <worker name="default"/>
            <buffer-pool name="default"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:infinispan:2.0">
            <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
                <local-cache name="passivation" batching="true">
                    <file-store passivation="true" purge="false"/>
                </local-cache>
                <local-cache name="persistent" batching="true">
                    <file-store passivation="false" purge="false"/>
                </local-cache>
            </cache-container>
            <cache-container name="ejb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan" aliases="sfsb">
                <local-cache name="passivation" batching="true">
                    <file-store passivation="true" purge="false"/>
                </local-cache>
                <local-cache name="persistent" batching="true">
                    <file-store passivation="false" purge="false"/>
                </local-cache>
            </cache-container>
            <cache-container name="hibernate" default-cache="local-query" module="org.hibernate">
                <local-cache name="entity">
                    <transaction mode="NON_XA"/>
                    <eviction strategy="LRU" max-entries="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <local-cache name="local-query">
                    <transaction mode="NONE"/>
                    <eviction strategy="LRU" max-entries="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <local-cache name="timestamps">
                    <transaction mode="NONE"/>
                    <eviction strategy="NONE"/>
                </local-cache>
            </cache-container>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jacorb:1.3">
            <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl">
                <initializers security="identity" transactions="spec"/>
            </orb>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
        <subsystem xmlns="urn:jboss:domain:jca:2.0">
            <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
            <bean-validation enabled="true"/>
            <default-workmanager>
                <short-running-threads>
                    <core-threads count="50"/>
                    <queue-length count="50"/>
                    <max-threads count="50"/>
                    <keepalive-time time="10" unit="seconds"/>
                </short-running-threads>
                <long-running-threads>
                    <core-threads count="50"/>
                    <queue-length count="50"/>
                    <max-threads count="50"/>
                    <keepalive-time time="10" unit="seconds"/>
                </long-running-threads>
            </default-workmanager>
            <cached-connection-manager/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
        <subsystem xmlns="urn:jboss:domain:jmx:1.3">
            <expose-resolved-model/>
            <expose-expression-model/>
            <remoting-connector/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jpa:1.1">
            <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jsf:1.0"/>
        <subsystem xmlns="urn:jboss:domain:jsr77:1.0"/>
        <subsystem xmlns="urn:jboss:domain:mail:2.0">
            <mail-session name="default" jndi-name="java:jboss/mail/Default">
                <smtp-server outbound-socket-binding-ref="mail-smtp"/>
            </mail-session>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:messaging:2.0">
            <hornetq-server>
                <journal-file-size>102400</journal-file-size>

                <connectors>
                    <http-connector name="http-connector" socket-binding="http">
                        <param key="http-upgrade-endpoint" value="http-acceptor"/>
                    </http-connector>
                    <http-connector name="http-connector-throughput" socket-binding="http">
                        <param key="http-upgrade-endpoint" value="http-acceptor-throughput"/>
                        <param key="batch-delay" value="50"/>
                    </http-connector>
                    <in-vm-connector name="in-vm" server-id="0"/>
                </connectors>

                <acceptors>
                    <http-acceptor http-listener="default" name="http-acceptor"/>
                    <http-acceptor http-listener="default" name="http-acceptor-throughput">
                        <param key="batch-delay" value="50"/>
                        <param key="direct-deliver" value="false"/>
                    </http-acceptor>
                    <in-vm-acceptor name="in-vm" server-id="0"/>
                </acceptors>

                <security-settings>
                    <security-setting match="#">
                        <permission type="send" roles="guest"/>
                        <permission type="consume" roles="guest"/>
                        <permission type="createNonDurableQueue" roles="guest"/>
                        <permission type="deleteNonDurableQueue" roles="guest"/>
                    </security-setting>
                </security-settings>

                <address-settings>
                    <address-setting match="#">
                        <dead-letter-address>jms.queue.DLQ</dead-letter-address>
                        <expiry-address>jms.queue.ExpiryQueue</expiry-address>
                        <max-size-bytes>10485760</max-size-bytes>
                        <page-size-bytes>2097152</page-size-bytes>
                        <message-counter-history-day-limit>10</message-counter-history-day-limit>
                    </address-setting>
                </address-settings>

                <jms-connection-factories>
                    <connection-factory name="InVmConnectionFactory">
                        <connectors>
                            <connector-ref connector-name="in-vm"/>
                        </connectors>
                        <entries>
                            <entry name="java:/ConnectionFactory"/>
                        </entries>
                    </connection-factory>
                    <connection-factory name="RemoteConnectionFactory">
                        <connectors>
                            <connector-ref connector-name="http-connector"/>
                        </connectors>
                        <entries>
                            <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                        </entries>
                    </connection-factory>
                    <pooled-connection-factory name="hornetq-ra">
                        <transaction mode="xa"/>
                        <connectors>
                            <connector-ref connector-name="in-vm"/>
                        </connectors>
                        <entries>
                            <entry name="java:/JmsXA"/>
                            <entry name="java:jboss/DefaultJMSConnectionFactory"/>
                        </entries>
                    </pooled-connection-factory>
                </jms-connection-factories>

                <jms-destinations>
                    <jms-queue name="ExpiryQueue">
                        <entry name="java:/jms/queue/ExpiryQueue"/>
                    </jms-queue>
                    <jms-queue name="DLQ">
                        <entry name="java:/jms/queue/DLQ"/>
                    </jms-queue>
                </jms-destinations>
            </hornetq-server>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:naming:2.0">
            <remote-naming/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
        <subsystem xmlns="urn:jboss:domain:remoting:2.0">
            <endpoint worker="default"/>
            <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:resource-adapters:2.0">
            <resource-adapters>
                <resource-adapter id="activemq-rar.rar">
                    <module slot="main" id="org.apache.activemq"/>
                    <transaction-support>NoTransaction</transaction-support>
                    <config-property name="ServerUrl">
                        tcp://localhost:61616
                    </config-property>
                    <connection-definitions>
                        <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/AMQConnectionFactory" enabled="true" use-java-context="true" pool-name="AMQConnectionFactory"/>
                    </connection-definitions>
                    <admin-objects>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/queue/JMSBridgeTargetQ" use-java-context="true" pool-name="target_queue">
                            <config-property name="PhysicalName">
                                JMSBridgeTargetQ
                            </config-property>
                        </admin-object>
                    </admin-objects>
                </resource-adapter>
            </resource-adapters>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:sar:1.0"/>
        <subsystem xmlns="urn:jboss:domain:security:1.2">
            <security-domains>
                <security-domain name="other" cache-type="default">
                    <authentication>
                        <login-module code="Remoting" flag="optional">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                        <login-module code="RealmDirect" flag="required">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                    </authentication>
                </security-domain>
                <security-domain name="jboss-web-policy" cache-type="default">
                    <authorization>
                        <policy-module code="Delegating" flag="required"/>
                    </authorization>
                </security-domain>
                <security-domain name="jboss-ejb-policy" cache-type="default">
                    <authorization>
                        <policy-module code="Delegating" flag="required"/>
                    </authorization>
                </security-domain>
            </security-domains>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:transactions:2.0">
            <core-environment>
                <process-id>
                    <uuid/>
                </process-id>
            </core-environment>
            <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:undertow:1.1">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="server-header"/>
                    <filter-ref name="x-powered-by-header"/>
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
            <filters>
                <response-header name="server-header" header-name="Server" header-value="WildFly/8"/>
                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
            </filters>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:webservices:1.2">
            <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
            <endpoint-config name="Standard-Endpoint-Config"/>
            <endpoint-config name="Recording-Endpoint-Config">
                <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                    <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
                </pre-handler-chain>
            </endpoint-config>
            <client-config name="Standard-Client-Config"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:weld:2.0"/>
    </profile>

    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:127.0.0.1}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
        </interface>
    </interfaces>

    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="jacorb" interface="unsecure" port="3528"/>
        <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
        <socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>

</server>

  • キューの送信側確認

f:id:raimus0904:20141210025924j:plain

  • キューの取り出し側確認
03:07:55,182 INFO  [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (default-threads - 8) Received Message from queue: This is message 1
03:07:55,204 INFO  [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (default-threads - 9) Received Message from queue: This is message 2
03:07:55,238 INFO  [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (default-threads - 10) Received Message from queue: This is message 3
03:07:55,272 INFO  [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (default-threads - 11) Received Message from queue: This is message 4
03:07:55,305 INFO  [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (default-threads - 12) Received Message from queue: This is message 5