hatenob

プログラムって分からないことだらけ

Mavenで自前のリポジトリを用意する

Mavenを使って作成したライブラリを他のプログラムでも使いたいときはMavenリポジトリに登録すれば色々と楽です。 でもセントラルリポジトリに登録するは手続きがあって面倒だし、そもそも公開するほどでもなかったりできなかったりで、中でだけ共有できれば…

Wildfly Swarmを触りながらOSSを感じる

Wildflyを使ってMicroservicesなインフラを作ろう的なプロジェクトだと思われるSwarmというのがリリースされた模様。またAlpha1なので実用には及ばないとのことだけれど。WildFly Swarm Initial Release · WildFlyこの領域はSpring Bootが先行しているのだと…

Undertowでリバースプロキシ

WildflyのWebコンポーネントであるUndertowを使って簡単なリバースプロキシを書く。 と言っても、実はUndertowには最初からリバプロ用のHttpHandlerがあるのでそれを使うだけ。 ただリバプロだけじゃ面白くないので、リクエストヘッダに任意の文字列を付けて…

WildflyでJAX-WSの非同期コール

JAX-WSを使ってサービスコールをする際には、3つの呼出し方が選べる。 同期 非同期コールバック 非同期ポーリング あくまで、「コンシューマが選択できるもの」としてこの3つを試したみた。 もちろん、プロバイダ側を非同期型にする(この場合、コンシューマ…

Wildfly 8でJAAS

Wildfly8でJAASの動きを確認した時のメモ。 JAAS Java Authentication and Authorization ServiceはJavaの認証認可機構のこと。 ユーザとロールを紐づけ、そのロールでアクセスできるURLやらEJBやらを制御することができるもの。 認証方式はいくつか取れるが…

Wildflyで2つのデータソースでJPA使ったトランザクション

試したみたことのメモ。 試したこと Wildflyで、同一のDBを指す、名前以外は同じの2つのデータソースを定義する。 JPA用にそれぞれのpersistence-unitを定義。 1つのEJB処理の中で2つのpersistence-unitに対して操作を行うとどうなるか? 試した理由 物理的…

JPAでHibernateの更新時の楽観ロックエラーの実装を確認した

ちょっと調べものをしていたのでメモ。 調べたかったこと JPAのEntityで楽観ロック(@Version)を使った場合、更新時にjavax.persistence.OptimisticLockExceptionになる条件。 調べかった理由 VersionチェックのためにSQL投げたりしてないよね?というのを…

JPAでカーソル操作

JPAで複数件取得する時は、getResultListで取得するのが一般的なやり方です。 画面で数十件ずつページングをしながら表示をさせるようなケースではこれでよいのだと思いますが、数万件とかになるとそれが全部オブジェクトとしてヒープに乗ってきてしまうので…

JavaでFTP

月に1つは何か試して記事書きたいなぁと思いますが、なかなか時間と体力がありません。 JavaでFTP JavaからFTPサーバにつないでファイルをアップロードするようなプログラムを書いてみました。 ソースはこちら。chanko/chanko-ftp at master · nobrooklyn/ch…

AngularJSでWildfly上のリソースにアクセス

Wildfly上の~と言っておきながら、REST APIなので別にAPサーバ問わないわけですが、前回とかの続きなので一応付けておきました、という感じです。以前、こちらのエントリでAngularJS使ったコードを写経しました。AngularJSを触ってみた - hatenobこの時は完…

Wildfly 8でメソッドの実行時間を取るインタセプターを作る

メソッドの実行時間を取りたいなぁというとき、メソッドの最初と最後でSystem.currentTimeMillis()してその差をログに出す、なんてことをよくやるわけですが(プロファイラ使えばそもそもそんなことやらなくていいんでしょうが)、直接メソッド内に処理を書…

Wildfly 8でEJBとJAX-WSを同じインタフェースで呼ぶ

JAX-RSのServiceを、同じ「Service」として例えばJSFのManagedBeanから、EJBでもJAX-WSでも呼べるようにしてみた。 それ自体は別に難しいことではなかったです。 Serviceクラス // for JAX-RS @Path("todo") // for JAX-WS @WebService // for EJB @Stateles…

Wildfly 8とHibernate OGMでMongoDBにJPA

前回からの続き的内容。 RESTの受け口が作れたので、今度はそれを永続化するところに挑戦。永続化と言えばDBなので、MySQLとかでもいんだけれども、せっかくなのでMongoDBに永続化することにしてみます。 Javaなので、APIは当然JPAです!って、MongoDBとかっ…

JAX-RS on Wildfly 8 でhello的なもの

前回AngularJS使ってみてて、サーバ側はRESTインタフェースで構えようと思ったらJAX-RSの使い方とかよく知らないのにはたと気づいたので、Wildfly8.2でJAX-RSのhello world的なものを試してみました。 いやほんと、今更ながらそんなレベルです。 Java Javaの…

AngularJSを触ってみた

js

前回のBootstrapに続き、モダンなUIフレームワークをいじるシリーズで、クライアントMVCのためのJavascriptフレームワーク、AngularJSを触ってみました。 こちらも下記のチュートリアルに従って写経しただけです。 すぐできる AngularJSAngularJSの使い方を…

Bootstrapを触ってみた

最近めっきりUI関連の技術に疎くなってしまったところ、ちょいと動かして試せそうな記事があったので触ってみた。 Bootstrapという、レスポンシブWebデザインなライブラリとのこと。 特になんてことはなく、サンプルとして記事に書かれている内容を写経した…

ServerUnitというのを作ってみた

作ろうと思った経緯 昨今、DevOpsの旗印のもと様々なツールが登場しておりますが、その1つにserverspecというサーバ状態をテストするためのツールがあります。 Serverspec - Home僕の中で、このテストツールはインフラテストにプログラムコードを持ち込んだ…

Androidでjarをライブラリとして使用する

ちょっとAndroidのアプリを書いておりまして少しだけはまりました。とある機能をPCでもAndroidでも使えるように、ライブラリとしてjarでパッケージングをしました。 PCではちゃんと動きました。Androidで使うには、単にlibsの下にそのjarを置けばいい、はず…

CentOS 7でDockerを動かす

RHEL7リリースから1ヶ月遅れくらいでCentOS7がリリースされました。 CentOS7のインストール ミラーサイトからnetinstallのISO落としてきて、VMWare Player上にインストールしました。ごちゃごちゃと入れたくないしISOでかいのが嫌で、6まではminimalを使って…

一人Web開発~最終夜 まとめ

感想、思いのほか時間がかかった。 初めてやるようなことはなかったのだけれど、ちょっとしたことにはまったり、あとは単純に時間がとれなかったり。はまったりするとなかなかまとまった時間がないと厳しいなぁ。 基本形は今回作れたので、あとはこれを太ら…

一人Web開発~第15夜 ログ管理

前回も書いたけれど、ログは主に調査、解析用のバックアップと、監査用のバックアップの2つがあり、前者は1週間~1ヶ月、後者は1年以上とかになる。昨今のビッグデータ活用により前者も何年とか蓄積するケースもあるけれど、その場合は生ログではなく、それ…

一人Web開発~第14夜 MariaDBバックアップ

バックアップを取る時に、その目的は大体2つ。 障害復旧用 調査、解析、監査等の保存用 障害復旧の場合は、物理障害対策であれば1世代前まであれば十分で、論理障害対策であれば最大何世代前まで戻したいかによります。 調査、解析、監査用であればそれぞれ…

一人Web開発~第13夜 Zabbix導入

前回、「次はインフラのITを」と言っていたのですが、気が変わった(というか、パパッとできるインフラITのネタが思い浮かばなかった)ので、次の工程であるZabbixの導入に進みたいと思います。 今回初めて触ったので、ちょっと変なところではまりました。 Z…

一人Web開発~第12夜 Integration Test

Integration Test(以下、IT)は日本語にすると結合テストなんだけれども、何と何を結合するのかでだいぶんテストの内容が変わってきます。 今回は大きくこの2つをITとして取り扱うことにします。 アプリケーションを画面から実行するテスト。だいたい1つの…

一人Web開発~第11夜 Jenkins導入

CIできるようにJenkinsを導入します。 CIといってもまだIntegration Test(IT)のコード書いてないので、まずはこれまでに書いたテストを順に実行できるようにします。 今のところの対象は下の2つ。 serverspecのテスト util、ejb、webのJUnitテスト(順番は…

一人Web開発~第10夜 JSF

画面はJSFで書きます。JavaEE7のJSF2.2では、よりHTMLに近い書き方ができるようになったとか。HTML5との親和性とかそういったことなんでしょうかねぇ。 画面 先に画面を作ります。単純に、名前とパスワードを入力してそれを登録し、登録完了したら完了画面に…

一人Web開発~第9夜 EJB

EJBを書きます。正しくは、EJB+JPAです。 サービスとして独立した形を目指して、ロジックとデータアクセス部分をひとまとまりに切り出すことにしました。 画面はアプリケーションごとに、ロジックは共通に、というのは古くからあるパターンなんだろうけど、…

一人Web開発~第8夜 共通ライブラリ

ようやくプログラミングに入ります。 Eclipseを使いますが、細かい設定についてはここでは触れません。 Mavenが使えるようになっていれば最低限ことは足りると思います。 ターゲットはWildflyに固定していることもあり、面倒なのでJBoss Toolsを入れてしまう…

一人Web開発~第7夜 Nexusの導入

アプリケーションを作る、前に、ライブラリ管理できる仕組みを整えておくことにします。 ライブラリ管理にはMavenを使用し、Mavenリポジトリを管理するために、Sonatype NexusのOSS版を使用します。 Nexusは、Mavenリポジトリのホストと、セントラルリポジト…

一人Web開発~第6夜 MariaDBの導入

アプリケーション実行環境の最後、データストアとあるRDBMSとしてMariaDBをインストールする。せっかくなので、まだ安定はしてないけれど、10.0を入れることにします。 MariaDBのインストール MariadDBのレシピは今のところとても少ない。 # Install package…