Backbone.Validationが空文字を許してくれない

Backboneでvalidateを簡単にしてくれるプラグインBackbone.Validation。 GitHub - thedersen/backbone.validation: A validation plugin for Backbone.js that validates both your model as well as form input 正規表現で入力値をチェックできるpatternを…

まーしゃる

先のエントリーにあるメソッドmarshalの意味を調べる。 marshal:(名詞) 元帥 なんだそりゃ、と思ったが動詞だと「(人・軍隊を)整列させる、整頓する」という意味らしい。 だから元帥なのね。 戦いの意味合いを持っているなら、マーシャルアーツのマーシャル…

Jersey(MOXy)でJSONバインドをカスタマイズする

JSONをリクエストで投げてJersey(MOXy)でPOJOとして受ける際に、Integerのフィールドに空文字が来ると「0」に変換される。 0じゃなくてnullで受けたい、というように変換をカスタマイズした場合はXmlAdapterを継承したadapterを作る。 参考:JAXBのXmlAdapte…

BeanManagerを取得する on Weld, Tomcat

Weld 2.3.1 + Jersey2.22.1 Tomcat8 発端はEntityに登録者IDや更新者IDを埋め込みたかったが、Entityで@SessionScopedなBeanを@Injectできなかったから。 EntityListener使ってみたり紆余曲折あったが、時間が無いので経過は省くとして結局BeanManagerを取得…

backbone.validationメモ

参考:thedersen/backbone.validation · GitHub backbone 1.2.0 backbone.validation 0.11.5 backbone自体にvalidation機能はあるが、処理をいちいち書かないといけないし複雑化すると後から読むのも大変。 なのでbackbone.validationプラグインを使ってスッ…

ポート番号8888

「昨日アップされたソース取り込んで動かしたら変なサイトに飛ぶんだけど」 いやそんなの仕込んだ覚えないし。でも本当に「free-merchants.com」というサイトに飛ばされている。それに自分のローカル環境では起きない。 「chromeのプラグインが悪さしてんの…

JPQLのfetch その2

JOIN (≠JOIN FETCH) JPQLはJOIN FETCHではなくJOINだけでも書ける。 @NamedQuery(name="Find", query="SELECT DISTINCT t FROM Team t JOIN t.members m") SELECT DISTINCT t1.ID, t1.NAME FROM member t0, team t1 WHERE (t0.teamId = t1.ID) 1 Aチーム SEL…

JPQLのfetch その1

タイトルの通りだが勉強不足でハマったのでメモ。 Java8 + JPA2.1 + eclipselink2.6 テーブル team id name 1 Aチーム 2 MP member id name teamId 1 ハンニバル 1 2 フェイス 1 3 B.A. 1 4 マードック 1 101 リンチ 2 102 デッカー 2 103 フルブライト 2 En…

JDBCでINSERT後のシーケンス値を取得する

idカラムを作って自動採番するような場合。 JPAでINSERTすればidが入った状態でEntityが取れるけど、JDBCの場合にどうするか。 何故にJDBCかというと、バイナリデータを放り込むのにJPAではなくJDBCを使いたいから。 PostgreSQLのbyteaカラムに手動でデータ…

Javaのログ出力ライブラリメモ

知識がlog4jで止まっていたので調査。 Javaのログ出力: 道具と考え方 javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ ・・・迷路で遊ぶ暇は無いんだけどな、、、 とりあえず「SLF4J+Logback」でそんなに問題には…

JAX-RS 返却用クラスはデフォルトコンストラクタ必須

タイトルの通り。JAXBの仕様?らしい。 @GET @Produces(MediaType.APPLICATION_JSON) public User getIt() { return new User(1); } この場合、Userクラスが以下だとダメ。 public class User { public User(int id) {} } ちゃんとデフォルトコンストラクタ…

JSON・XMLを返すけどエラー時はステータスコードやメッセージを選びたい

JAX-RSで200とか404とか返すだけなら、メソッド戻り値にResponseを指定してResponseを操作すればいい。 @RequestScoped @Path("myresource") public class MyResource { @GET public Response getIt() { return Response.ok().build(); // 200が返る } } JSO…

DeltaSpike(Data)を諦める

DeltaSpikeもひと通り調べ終わり、実際にコーディングを進めていたがDeltaSpike Dataを使うのを諦めることにした。 理由は原因不明のOutOfMemoryError (heap space)が発生して、どうしても発生源が突き止められなかったから。 JAX-RSの1リクエストでReposito…

Jersey + CDIで@Contextが動かない

Jersey + CDIの構成で、ContainerRequestFilterの中でUriInfoを使おうとしてハマった。 構成は JAX-RS(Jersey) + JPA (on CDI) / on Tomcat - edgegram がベースでDeltaspikeを少々追加。 public class FormTypeFilter implements ContainerRequestFilter { …

PostgreSQLのbyteaカラムに手動でデータを入れる

初期データ用にbyteaデータを入れようと調べてみたが、psqlからのINSERTはできない? 仕方なくJDBCで放り込むことにした。(その時点で既に手動ではないが) Chapter 7. Storing Binary Data Class.forName("org.postgresql.Driver"); Connection con = Driver…

バッテリー上がり

車のバッテリーが上がったので交換した。 あまり動かさないのと、駐車場が家から自転車で5分強と少々距離があり、こまめにエンジンをかけに行けない。 停めているのが知り合いの所なので駐車場代無料なのは魅力。 近くに借りると軽く1.5万/月はするので、毎…

JAX-RS(Jersey)のFilter(RequestFilter)を使う

JAX-RSのフィルタを使うが、前回書いた通り認可処理でとりあえず使うだけなので、RequestFilterが中心。 参考 Chapter 10. Filters and Interceptors 環境 Java8 Tomcat8 Jersey2.22.1 とりあえずFilter使う ContainerRequestFilter リクエストフィルタはCon…

JAX-RS(Jersey) Filterを使う前に

システムの都合上、認証・認可で標準的手法(Basic, Form, Digest, etc...)が使えない。 そんなわけでフィルタを使ってゴニョゴニョすることになるが、実際に使う前に関連情報を整理。 参考 Chapter 10. Filters and Interceptors JAX-RS 2.0 ことはじめ - Pr…

Jerseyの設定2(web.xmlとかApplicationクラスとか)

前回の続きでServlet3.xで動かす場合の設定。 Chapter 4. Application Deployment and Runtime Environments Servlert3.x pom.xml 前回にも書いたが、Servlet2.xと3.xでは使用するモジュールが異なる。 <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-</artifactid></dependency></dependencies>…

Jerseyの設定1(web.xmlとかApplicationクラスとか)

Jerseyの設定がバージョンによって違うが、webにある情報が色々混在していたりバージョンが不明だったりするので整理。 DeltaSpikeといいJerseyといい、結局は公式ドキュメントを読み込まないといけなくなる。英語力無いのが辛いところ。 Chapter 4. Applica…

DeltaSpike Data Module(使いそうなところだけ)まとめ4

Transactions ・・・DeltaSpike JPAも使うつもりだけど、完全に理解できていない。。。 特に指定せずに1トランザクション内で異なるRepositoryの更新ができるなら問題ないけど。。。 とりあえず 「the repository will figure out if a transaction is neede…

DeltaSpike Data Module(使いそうなところだけ)まとめ3

Query Annotations @QueryでJPQLが使える。 Queryアノテーション使う(Using Query Annotations) Repositoryに書く場合 public interface PersonRepository extends EntityRepository<Person, Long> { @Query("select count(p) from Person p where p.age > ?1") Long count</person,>…

DeltaSpike Data Module(使いそうなところだけ)まとめ2

Query Method Expressions メソッド名をちゃんと(分かりやすく)付ければコメントいらない。分かりやすいメソッド名でクエリを作ってしまおう。ということらしい。 メソッド式を使う(Using Method Expressions) @Entity public class Person { @Id @Generated…

DeltaSpike Data Module(使いそうなところだけ)まとめ1

DeltaSpike Data ModuleはRepositoryパターンを提供してくれるモジュール。 というのは昨日も書いた。実際に少し試してみる。 DeltaSpike 1.5.1 参考Data Module Project Setup 依存設定(Declare Data Module Dependencies) Maven前提。pomに「deltaspike-da…

DeltaSpike Data Moduleで複数EntityManagerを呼び分ける

DeltaSpike Data ModuleはRepositoryパターンを提供してくれるモジュール。 ・・・リポジトリ パターンは不勉強、とりあえす典型コード(boilerplate code)をすっきりさせてくれるらしい、と理解しておく。 DeltaSpike 1.5.1 参考 Data Module 本題 「複数のE…

複数のEntityManagerを切り替える(on CDI)

データベースが複数あるなどで、接続先を選びたい場合。 ついでにあやふやにしたままだったアノテーションも整理。 参考 JPA Module 環境 Java8SE Tomcat8 ※なので@PersistenceContextが使えません。使えるともう少し楽? Weld 2.3.1 単一EntityManager(変更…

JPAでデータソースからコネクションを取得

環境 Tomcat8 PostgreSQL9.4 データソース設定 参考 Apache Tomcat 8 (8.0.28) - JNDI Datasource HOW-TO JDBCドライバ配置 $CATALINA_HOME/lib にコピーしろって書いてあるけど、前エントリに書いたようにWEB-INF/libに置いている。 Resource設定 Contextに…

Tomcat JDBC Connection Pool

Tomcat7最新版ではデータソースのタイプが2種類提供されている。 Apache Commons DBCP 以前から使用されていたデータソース Tomcat JDBC Connection Pool Apache Tomcat 7 (7.0.65) - The Tomcat JDBC Connection Pool マルチコアに対応 高パフォーマンス シ…

JDBCのDataSource整理

アプリケーションサーバーでデータソースを構成する際、(javax.sql.)DataSource、XADataSource、ConnectionPoolDataSourceをtypeとして指定するが、違いがよく分からなかったので調べてみる。 DataSource たぶん最も基本的なやつ 普通に構成する分にはこれを…

Tomcatでは@PersistenceContextは使えない

前エントリではEntityManagerをわざわざFactoryから生成している。 JPAについて書いているブログなどでは、@PersistenceContextでEntityManagerを取ってくるサンプルがあるし、DeltaSpikeのData Moduleのページにも@PersistenceUnitでEntityManagerFactoryを…