Entries tagged [wildfly]
WildFly8.0.0CR1でPOSTパラメータの文字化けを回避する
TweetPosted on Thursday Jan 23, 2014 at 04:13PM in Technology
環境
- WildFly8.0.0CR1
- Oracle JRE7u51
設定内容
/WEB-INF/jboss-web.xmlに以下のような内容を書くだけです
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="8.0" xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.org/j2ee/schema/jboss-web_8_0.xsd">
<default-encoding>UTF-8</default-encoding>
</jboss-web>
WildFly8は最近HTTPサーバの実装が切り替わったか何かで若干情報が見つかり辛かった。あとアプリ別じゃなくてアプリケーションサーバ全体に同じ設定を適用する手段も参考資料にありました。試してないけど。
あと何故かこの設定を入れなくてもajaxの通信は化けなかった
参考文献
Tags: wildfly
CLIからデプロイしてみる
TweetPosted on Tuesday Jan 21, 2014 at 04:18PM in Technology
環境
- WildFly8.0.0CR1
- Eclipse Kelper SR1
デプロイするWARファイルの準備
WARファイルを作る
対象のプロジェクトを選んで右クリック→Export→WAR file
Web projectとDestnationを埋めてFinish
中身を見てみる
kyle-no-MacBook:~ kyle$ jar tvf ~/JavaEE7Prac.war
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
105 Mon Jan 20 13:28:12 JST 2014 META-INF/MANIFEST.MF
0 Sat Jan 18 21:56:20 JST 2014 META-INF/
0 Thu Jan 16 15:04:08 JST 2014 META-INF/maven/
0 Thu Jan 16 15:04:08 JST 2014 META-INF/maven/com.example/
0 Thu Jan 16 15:04:08 JST 2014 META-INF/maven/com.example/JavaEE7Prac/
232 Mon Jan 20 18:07:00 JST 2014 META-INF/maven/com.example/JavaEE7Prac/pom.properties
897 Mon Jan 20 18:07:00 JST 2014 META-INF/maven/com.example/JavaEE7Prac/pom.xml
0 Sat Jan 18 21:53:56 JST 2014 WEB-INF/
0 Sat Jan 18 21:56:12 JST 2014 WEB-INF/classes/
0 Sat Jan 18 21:56:20 JST 2014 WEB-INF/classes/META-INF/
0 Sat Jan 18 21:47:46 JST 2014 WEB-INF/classes/META-INF/batch-jobs/
183 Sat Jan 18 21:50:40 JST 2014 WEB-INF/classes/META-INF/batch-jobs/job001.xml
0 Thu Jan 16 15:09:30 JST 2014 WEB-INF/classes/com/
0 Mon Jan 20 17:00:08 JST 2014 WEB-INF/classes/com/example/
678 Mon Jan 20 13:28:16 JST 2014 WEB-INF/classes/com/example/TestBatchlet.class
1413 Mon Jan 20 13:28:16 JST 2014 WEB-INF/classes/com/example/TestServlet.class
252 Sat Jan 18 21:53:56 JST 2014 WEB-INF/beans.xml
0 Thu Jan 16 15:51:56 JST 2014 WEB-INF/lib/
385091 Mon Jan 20 13:28:12 JST 2014 WEB-INF/lib/commons-lang3-3.2.1.jar
540 Mon Jan 20 16:58:00 JST 2014 WEB-INF/web.xml
kyle-no-MacBook:~ kyle$
大丈夫そうですね。jarファイルとかもちゃんと入ってる。
デプロイしてみる
CLIからデプロイ
$ sudo -i -u wildfly /usr/local/wildfly/bin/jboss-cli.sh [disconnected /] connect [standalone@localhost:9990 /] deploy /tmp/JavaEE7Prac.war [standalone@localhost:9990 /]
アクセスしてみる
大丈夫そうですね
デプロイされたアプリ一覧を表示
[standalone@localhost:9990 /] ls deployment JavaEE7Prac.war postgresql-9.3-1100.jdbc41.jar [standalone@localhost:9990 /]
CLIからアンデプロイ
[standalone@localhost:9990 /] undeploy JavaEE7Prac.war [standalone@localhost:9990 /]
[standalone@localhost:9990 /] ls deployment postgresql-9.3-1100.jdbc41.jar [standalone@localhost:9990 /]
消えましたね。アクセスしても消えています
$JBOSS_HOME/standalone/log/server.logを見てみる
2014-01-21 15:45:59,294 INFO [org.jboss.as.repository] (management-handler-thread - 8) JBAS014900: Content added at location /usr/local/wildfly/standalone/data/content/81/8f5b7155a35cc08acfd55f279cd7bab40e5972/content 2014-01-21 15:45:59,305 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "JavaEE7Prac.war" (runtime-name: "JavaEE7Prac.war") 2014-01-21 15:46:00,445 INFO [org.jboss.weld.deployer] (MSC service thread 1-3) JBAS016002: Processing weld deployment JavaEE7Prac.war 2014-01-21 15:46:01,027 INFO [org.hibernate.validator.internal.util.Version] (MSC service thread 1-3) HV000001: Hibernate Validator 5.0.2.Final 2014-01-21 15:46:01,941 INFO [org.jboss.weld.deployer] (MSC service thread 1-1) JBAS016005: Starting Services for CDI deployment: JavaEE7Prac.war 2014-01-21 15:46:02,535 INFO [org.jboss.weld.Version] (MSC service thread 1-1) WELD-000900: 2.1.1 (Final) 2014-01-21 15:46:02,593 INFO [org.jboss.weld.deployer] (MSC service thread 1-1) JBAS016008: Starting weld service for deployment JavaEE7Prac.war 2014-01-21 15:46:05,880 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Initializing Mojarra 2.2.4-jbossorg-1 20131017-1524 for context '/JavaEE7Prac' 2014-01-21 15:46:07,412 INFO [org.wildfly.extension.undertow] (MSC service thread 1-4) JBAS017534: Register web context: /JavaEE7Prac 2014-01-21 15:46:07,590 INFO [org.jboss.as.server] (management-handler-thread - 8) JBAS018559: Deployed "JavaEE7Prac.war" (runtime-name : "JavaEE7Prac.war") 2014-01-21 15:46:38,643 INFO [stdout] (batch-batch - 1) Hello JSR352 2014-01-21 15:47:14,605 INFO [stdout] (batch-batch - 3) Hello JSR352 2014-01-21 15:47:27,235 INFO [stdout] (batch-batch - 5) Hello JSR352 2014-01-21 15:47:27,389 INFO [stdout] (batch-batch - 7) Hello JSR352 2014-01-21 15:51:30,933 INFO [org.wildfly.extension.undertow] (MSC service thread 1-4) JBAS017535: Unregister web context: /JavaEE7Prac 2014-01-21 15:51:30,956 INFO [org.jboss.weld.deployer] (MSC service thread 1-3) JBAS016009: Stopping weld service for deployment JavaEE7Prac.war 2014-01-21 15:51:30,992 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment JavaEE7Prac.war (runtime-name: JavaEE7Prac.war) in 65ms 2014-01-21 15:51:31,088 INFO [org.jboss.as.repository] (management-handler-thread - 15) JBAS014901: Content removed from location /usr/local/wildfly/standalone/data/content/81/8f5b7155a35cc08acfd55f279cd7bab40e5972/content 2014-01-21 15:51:31,089 INFO [org.jboss.as.server] (management-handler-thread - 15) JBAS018558: Undeployed "JavaEE7Prac.war" (runtime-name: "JavaEE7Prac.war")
特に問題なさげですね。
上書きデプロイをワンライナーで
sudo -i -u wildfly /usr/local/wildfly/bin/jboss-cli.sh --connect "deploy /tmp/JavaEE7Prac.war --force JavaEE7Prac.war"
参考文献
Tags: wildfly
CLIでデータソースを定義する
TweetPosted on Tuesday Jan 21, 2014 at 06:37AM in Technology
環境
- WildFly 8.0.0CR1
- PostgreSQL 9.2.4
- postgresql-9.3-1100.jdbc41.jar
何をするの?
CLIからPostgreSQLのデータソースを定義してみます
JDBCドライバをデプロイ
方法1
WildFlyを展開したディレクトリ内の/standalone/deploymentsディレクトリにJDBCドライバを放り込むだけです。
方法2
[3]の下の方にPostgreSQLの例が書いてある。こっちの方が正規の手順っぽい。8.0.0.Finalだけどやってみる
資源を置く
kyle-no-MacBook:wildfly-8.0.0.Final kyle$ mkdir -p modules/org/postgresql/main kyle-no-MacBook:wildfly-8.0.0.Final kyle$ cd modules/org/postgresql/main kyle-no-MacBook:main kyle$ cp ~/Downloads/postgresql-9.3-1100.jdbc41.jar . kyle-no-MacBook:main kyle$ cat > module.xml << EOF > <?xml version="1.0" encoding="UTF-8"?> > <module xmlns="urn:jboss:module:1.0" name="org.postgresql"> > <resources> > <resource-root path="postgresql-9.3-1100.jdbc41.jar"/> > </resources> > <dependencies> > <module name="javax.api"/> > <module name="javax.transaction.api"/> > </dependencies> > </module> > EOF
(貼付け用)
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.3-1100.jdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
jboss-cliを使って登録する
kyle-no-MacBook:main kyle$ ~/apps/wildfly-8.0.0.Final/bin/jboss-cli.sh --connect
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
{"outcome" => "success"}
[standalone@localhost:9990 /] ls subsystem=datasources
data-source
jdbc-driver
xa-data-source
installed-drivers=[{"driver-name" => "h2","deployment-name" => undefined,"driver-module-name" => "com.h2database.h2","module-slot" => "main","driver-datasource-class-name" => "","driver-xa-datasource-class-name" => "org.h2.jdbcx.JdbcDataSource","driver-class-name" => "org.h2.Driver","driver-major-version" => 1,"driver-minor-version" => 3,"jdbc-compliant" => true},{"driver-name" => "postgresql","deployment-name" => undefined,"driver-module-name" => "org.postgresql","module-slot" => "main","driver-datasource-class-name" => "","driver-xa-datasource-class-name" => "org.postgresql.xa.PGXADataSource","driver-class-name" => "org.postgresql.Driver","driver-major-version" => 9,"driver-minor-version" => 3,"jdbc-compliant" => false}]
[standalone@localhost:9990 /]
データソースの定義
jboss-cliの起動と接続
$ ./jboss-cli.sh 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 /]
使用可能なJDBCドライバ一覧を表示
デプロイしたものが出てきていることを確認します
[standalone@localhost:9990 /] ls subsystem=datasources
data-source
jdbc-driver
xa-data-source
installed-drivers=[{"driver-name" => "h2","deployment-name" => undefined,"driver-module-name" => "com.h2database.h2","module-slot" => "main","driver-datasource-class-name" => "","driver-xa-datasource-class-name" => "org.h2.jdbcx.JdbcDataSource","driver-class-name" => "org.h2.Driver","driver-major-version" => 1,"driver-minor-version" => 3,"jdbc-compliant" => true},{"driver-name" => "postgresql-9.3-1100.jdbc41.jar","deployment-name" => "postgresql-9.3-1100.jdbc41.jar","driver-module-name" => undefined,"module-slot" => undefined,"driver-datasource-class-name" => undefined,"driver-xa-datasource-class-name" => undefined,"driver-class-name" => "org.postgresql.Driver","driver-major-version" => 9,"driver-minor-version" => 3,"jdbc-compliant" => false}]
[standalone@localhost:9990 /]
データソースを追加
driver-nameはJDBCドライバのデプロイ方法によって変わってくる
- 方法1の場合、JDBCドライバのjarファイルの名前(postgresql-9.3-1100.jdbc41.jar)
- 方法2の場合、jboss-cliで指定した名前(postgresql)
data-source add \ --name=TestDS \ --driver-name=postgresql-9.3-1100.jdbc41.jar \ --connection-url=jdbc:postgresql://localhost:5432/testdb \ --jndi-name=java:jboss/jdbc/TestDS \ --user-name=postgres \ --password=***
接続のテスト
[standalone@localhost:9990 /] /subsystem=datasources/data-source=TestDS:test-connection-in-pool
{
"outcome" => "success",
"result" => [true]
}
[standalone@localhost:9990 /]
データソースの情報を見る
[standalone@localhost:9990 /] /subsystem=datasources/data-source=TestDS:read-resource
{
"outcome" => "success",
"result" => {
"allocation-retry" => undefined,
"allocation-retry-wait-millis" => undefined,
"allow-multiple-users" => false,
"background-validation" => undefined,
"background-validation-millis" => undefined,
"blocking-timeout-wait-millis" => undefined,
"capacity-decrementer-class" => undefined,
"capacity-decrementer-properties" => undefined,
"capacity-incrementer-class" => undefined,
"capacity-incrementer-properties" => undefined,
"check-valid-connection-sql" => undefined,
"connection-listener-class" => undefined,
"connection-listener-property" => undefined,
"connection-properties" => undefined,
"connection-url" => "jdbc:postgresql://localhost:5432/testdb",
"datasource-class" => undefined,
"driver-class" => undefined,
"driver-name" => "postgresql-9.3-1100.jdbc41.jar",
"enabled" => true,
"exception-sorter-class-name" => undefined,
"exception-sorter-properties" => undefined,
"flush-strategy" => undefined,
"idle-timeout-minutes" => undefined,
"initial-pool-size" => undefined,
"jndi-name" => "java:jboss/jdbc/TestDS",
"jta" => true,
"max-pool-size" => undefined,
"min-pool-size" => undefined,
"new-connection-sql" => undefined,
"password" => "***",
"pool-prefill" => undefined,
"pool-use-strict-min" => undefined,
"prepared-statements-cache-size" => undefined,
"query-timeout" => undefined,
"reauth-plugin-class-name" => undefined,
"reauth-plugin-properties" => undefined,
"security-domain" => undefined,
"set-tx-query-timeout" => false,
"share-prepared-statements" => false,
"spy" => false,
"stale-connection-checker-class-name" => undefined,
"stale-connection-checker-properties" => undefined,
"track-statements" => "NOWARN",
"transaction-isolation" => undefined,
"url-delimiter" => undefined,
"url-selector-strategy-class-name" => undefined,
"use-ccm" => true,
"use-fast-fail" => false,
"use-java-context" => true,
"use-try-lock" => undefined,
"user-name" => "postgres",
"valid-connection-checker-class-name" => undefined,
"valid-connection-checker-properties" => undefined,
"validate-on-match" => false,
"statistics" => {
"jdbc" => undefined,
"pool" => undefined
}
}
}
[standalone@localhost:9990 /]
データソースの設定を変更する
connection-urlを変更してみる
[standalone@localhost:9990 /] /subsystem=datasources/data-source=TestDS:write-attribute(name=connection-url, value=jdbc:postgresql:\/\/localhost:5432\/testdb2)
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
[standalone@localhost:9990 /]
データソースを削除する
[standalone@localhost:9990 /] /subsystem=datasources/data-source=TestDS:remove
{
"outcome" => "success",
"response-headers" => {"process-state" => "reload-required"}
}
[standalone@localhost:9990 /]
データソース一覧を表示する
[standalone@localhost:9990 /] ls /subsystem=datasources/data-source ArticlesDS ExampleDS PostgresqlDS TestDS [standalone@localhost:9990 /]
XAデータソースの定義
WildFly8.0.0.Finalでやってみた
普通のデータソースと異なりconnection-url表記は受け付けられないようだ。[5][6]を参考に
XAデータソースの追加
batch
xa-data-source add \
--name=JBatchXADS \
--driver-name=postgresql \
--jndi-name=java:jboss/jdbc/JBatchXADS \
--user-name=postgres \
--password=***
/subsystem=datasources/xa-data-source="JBatchXADS"/xa-datasource-properties=ServerName:add(value="localhost")
/subsystem=datasources/xa-data-source="JBatchXADS"/xa-datasource-properties=PortNumber:add(value="5432")
/subsystem=datasources/xa-data-source="JBatchXADS"/xa-datasource-properties=DatabaseName:add(value="jbatch")
run-batch
接続テスト
[standalone@localhost:9990 /] /:reload
{
"outcome" => "success",
"result" => undefined
}
[standalone@localhost:9990 /] /subsystem=datasources/xa-data-source=JBatchXADS:test-connection-in-pool
{
"outcome" => "success",
"result" => [true]
}
read-resourceで情報を見てみると、何故かxa-data-source-propertiesで設定した値がundefinedとかになっているのだが、XMLファイルを見てみると値が入っているし、接続テストもOKなので気にしない事にする
接続の障害検知
check-valid-connection-sqlを設定
[8]を見ると「試験以降は valid-connection-checker-class-name と check-valid-connection-sql のどちらかは絶対指定するように」とあるので、設定してみる。例はxa-data-source
/subsystem=datasources/xa-data-source=TestDS:write-attribute(name=check-valid-connection-sql, value="SELECT 1")
background-validation-millisを設定
[9]を見ると接続チェックを定期的に行わせることもできるみたい。設定はこんな感じか
/subsystem=datasources/xa-data-source=TestDS:write-attribute(name=background-validation-millis, value=60000)
validate-on-matchを設定
DataSource#getConnection()実行時に接続チェックをするか否か。AS7/EAP6からはデフォルトfalseらしい
/subsystem=datasources/xa-data-source=TestDS:write-attribute(name=validate-on-match, value=true)
idle-timeout-minutesを設定
障害検知ではないけど。プールの中で使われてない接続を破棄する設定。デフォルト30分。60分に延ばしてみる
/subsystem=datasources/xa-data-source=TestDS:write-attribute(name=idle-timeout-minutes, value=60)
備考
“non-JDBC-compliant”
デプロイするとこういう文言が出力されるのがすごい気になる
18:06:10,463 INFO [org.jboss.as.connector.subsystems.datasources] (management-handler-thread - 3) JBAS010404: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3) 18:06:10,464 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) JBAS010417: Started Driver service with driver-name = postgresql
参考文献
- CLI Recipes - JBoss AS 7.1 - Project Documentation Editor
- java - How to check datasource in JBoss? - Stack Overflow
- wildfly/quickstart · GitHub
- “non-JDBC-compliant”? - Community - JBoss
- WildFlyにXA DataSourceを登録する
- Creating XA Datasource from the CLI fails | Community
- JDBC XAデータソース - nekopの日記
- JBoss ASのデータソース設定 - nekopの日記
- JBoss ASのデータソース障害検知 - nekopの日記
Tags: wildfly
WildFly8.0.0CR1でサーブレットを動かしてみる
TweetPosted on Tuesday Jan 21, 2014 at 06:34AM in WildFly
WildFly8でEclipseでサーブレットを書いてデプロイしてみます。
JavaEE7のプロジェクトを作る
新しいMavenプロジェクトを作ってJavaEE7のarchetypeを探しますがEE6のしか見つかりません。
ここにJavaEE7用の何かが存在するようなのでこれを使ってみたかったのですが、やり方がよくわかりませんでした...。仕方が無いので替わりになりそうなものを使います。「Configure」→「Add
Remote Catalog」から新たなカタログ http://repo1.maven.org/maven2 を追加します。
もとの画面に戻ったら「javaee7」と入れてみます。すると「javaee7-essentials-archetype」というのが現れるのでこれを使って進めます。Nextを押すとしばらく何かのダウンロードが行われます。
適当に入力してFinish
右下に表示される処理中インジケータを眺めながらしばらく待つとプロジェクトが出来上がります。
サーブレットを作る
もはや何でも良いので超適当に
package com.example;
import java.io.IOException;
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("/TestServlet")
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("Hello world");
}
}
デプロイ
ServersのViewを開いてWildFlyを右クリックし「Add and Remove」を選びます
次に現れるウインドウで、つい先ほど作ったJavaEE7PracをAddして右側に移しFinishを押します
Consoleを見るとデプロイできました的なメッセージが出ているはず。確認したらブラウザで表示してみます。
自動デプロイさせる
方法1
htmlファイルなどはデフォルトで自動的に反映されるのですが、クラス等は追加の設定を入れないと自動デプロイが走りません。
- Serversを開きます
- WildFlyをダブルクリックします
- 画面下部の「Deployment」を選びます
- Deploy project as compressed archivesにチェックを入れます

それでは自動デプロイの実験をしてみます。こんな感じに編集して保存してみます。びっくりマーク追加しただけです。
保存してからコンソールを眺めているとデプロイしました的な文言が流れます。
ブラウザでリロードすると表示が変わり資源が更新されたことがわかります。
方法2
ここの設定を変更する方法もあります。静的コンテンツを頻繁に編集する場合はこっちの方がベターかと思われます。
正規表現のところをこういう感じにします。
\.jar|\.class$
参考文献
Tags: wildfly
WildFly8.0.0CR1をEclipseで動かしてみる
TweetPosted on Tuesday Jan 21, 2014 at 06:29AM in Technology
EclipseとJBoss Toolsを入れる
WildFlyはNetBeans7.4では使えないようなので(NetBeans8から使えるようになる模様)Eclipseを使います。私はeclipse-jee-kepler-SR1-macosx-cocoa-x86_64.tar.gzというやつを取って来ました。
Macの場合は、コンソールの日本語が?に化けるのを防ぐために、Eclipseを展開したらこの作業をやっておきましょう。
起動したらメニューからHelp→Eclipse MarketPlaceを開き「jboss」で検索すると「JBoss Tools (Kepler) 4.1.1.Final」というのが出てくるので、それをインストールします。Confirm Selected Futuresとかいう山ほどチェックボックスが出てくるダイアログとか表示されたりするけど特に気にせずデフォルトのまま次へ次へとやっていきます。
WildFlyを入れる
ダウンロードは ここから。私は wildfly-8.0.0.CR1.tar.gzというやつを取ってきました。
- wildflyを適当なところに展開する
- Eclipseのウェルカム的な画面を閉じる
- Window→Show View→Serversを開く
- サーバが無いから作れや的なリンクをクリックする
- WildFly 8.0 (Experimental)を選んでNext
- wildflyを展開したディレクトリを入力してFinish。こんな感じ
起動してみる
「Servers」にWildFlyが現れたら右クリックメニューからStartしてみましょう。
2915msとなかなか速いですね。ついでにブラウザからアクセスしてみましょう。
ちゃんと動いているようですね。
Tags: wildfly