2015-01-01から1年間の記事一覧

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を…

JAX-RS(Jersey) + JPA (on CDI) / on Tomcat

Tomcat上でJAX-RX(Jersey)を使う環境で、CDIからJPAのEntityManagerを取得するようにする。開発環境はeclipseでMarvenプロジェクトを使用。 分かりやすいサンプルがあったので楽勝・・・ではなかった。。。 参考(というかほぼそのまま) JAX-RS(Jersey)とJPA…

サーバー構成で悩む

RESTful(的) on Javaな構成で組む予定のサーバー側構成に悩む。 前提 構成以前にフレームワークをどうするか(RESTfulにするかどうかも含め)悩み、Viewと手が分けれるRESTfulにして、流行り廃れに振り回されないJavaEEにするのがよいと判断。 最近はStruts + …

書き初め

主にIT系の調べ物をした際の外付け記憶領域用のブログです。 ブログ形式にしないと多分まとめて整理しないので。