Java

Jerseyで@RolesAllowedアノテーションを使った認可の設定

JAX-RSでは、権限のあるユーザのみリソースにアクセスすることを可能にするために、アノテーションによる宣言型の記述とプログラマティックな処理をのためのAPIがあります。アノテーションを使う場合には、特定のロールを持つユーザのみ許可するのであれば、…

JAX-RS (Jersey) でパラメータとして独自のクラスをインジェクトする (2)

このエントリの続きです。パラメータが多い場合には、対応するメソッドの引数が増えてしまうので、引数をDTOにまとめたいという話です。 例えば、id, foo, bar, bazという引数があるメッソッドで、これらの引数を以下のようなDTOにしてクエリパラメータやパ…

JJUG CCC 2011 fall 行ってきた

すごい今更ですけど、10/17にJJUG CCC 2011 fall に行ってきました。基調講演の途中から参加しました。会場の国立オリンピック記念青少年総合センター初めて行ったので迷ってしまった。。 G-2 基調講演 JavaOne報告会 Part.2 JavaOne 2011 Report View more …

Jerseyでアップロードされたファイルを処理する

サーバーサイド Jerseyでマルチパート(multipart/form-data)によりアップロードされたファイルを処理するためには、jersey-multipartというモジュールを使用します。 pom.xmlのdependencyにjersey-multipartを追加します。 <dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version></version></dependency></dependencies>…

JerseyでJSONシリアライズ対象外のプロパティを指定する (2)

JerseyでJSONシリアライズ対象外のプロパティを指定する (1) こちらの続きです。JAX-RS(Jersey)でJavaオブジェクトをJSON形式に変換する際に、@XmlTransientをつけて対象外のプロパティを指定しましたが、今回はJacksonMixInAnnotationsを使用する方法を試し…

Selenium 2でChromeDriverを使う

WebアプリケーションのテストにSeleniumを使っていますが、少し前になりますがSelenium 2が正式にリリースされたので試しています。Selenium 2は、WebDriverベースとなりアーキテクチャ的にも大きく変更されています。Selenium RCで使用していたSeleniumServ…

IEでのみブラウザ内でPDFファイルを表示できない場合

Content-TypeもContent-Dispositionの設定も問題ないはずなのにIEでのみ、PDFファイルのブラウザ内での表示ができずにダウンロードダイアログが表示されてしまう。 レスポンスヘッダのContent-Typeにいつの間にかcharsetが付加されていることが原因でした。 …

HttpServiceとWAB(Web Application Bundle)

GlassfishでWebアプリケーションからOSGiバンドルを利用する 前回のサンプルでは、Webアプリケーション自体はwarとしてディプロイし、依存するサービスをOSGiバンドルとしてディプロイして@Resourceでインジェクションしていました。今回は、アプリケーショ…

Javaでtarファイルを操作する

Javaでtarファイルを操作する場合には、Commons Compressを使用するのが簡単そうです。Commons Compresは他にもbzip2やgzipにも対応しています。サイトのサンプルとJavadocを見ればだいたいの使い方はわかると思いますが。 File[] filesToArchive = {file1, …

JavaからWindowsのレジストリにアクセスするライブラリ

JavaからWindowsのレジストリにアクセスするライブラリについて調査したのでまとめておきます。いくつかのライブラリがありますが、基本的にはJNI経由でWin32 APIを呼び出しています。 Roxes Win32 for Java (Orangevolt Ant Tasksの一部) JRegistry SWT(Ecl…

Build Number Maven Pluginを使う

Build Number Maven Pluginを使うと、pom.xmlでプロパティとしてSCMのリビジョン番号${buildNumber}を使用できるようになります。 前提 内部的にsvnコマンドを実行するのでsubversionのバイナリがインストールされている必要があります。TortoiseSVN不可です…

MavenでWindows(x86 or x86_64)によってプロファイルを切り替える

具体的には、GUIにSWTを使っているJavaのデスクトップアプリケーションで、プラッtフォームによってSWTのjarを変更したいというシチュエーションです。SWTのjarファイルには、それぞれのプラットフォーム用のDLL(Windowsの場合)が含まれているので、x86 or x…

JAX-RS (Jersey) でパラメータとして独自のクラスをインジェクトする (1)

@QueryParamアノテーションで、パラメータをインジェクトすることができますが(パラメータに含まれない場合はnullになる)、パラメータがあまりに多いとメソッドシグネチャが見にくくなり、値をBeanにコピーしたりするのも面倒です。このような場合には、、 @…

JerseyのJSONサポート

引き続きJerseyについて調査しています。JerseyでレスポンスとしてJavaのオブジェクトをJSONに変換する場合には、いくつか方法があります。 POJOを直接変換する JAXB経由で変換する JSONObjectを生成する Jersey 1.5 User Guide - Chapter 5. JSON Support …

JAX-RS(Jersey)を使ってみる

JaveEE6に対応しているGlassfish 3.0を使う方が手っ取り早いとは思いますが、、サーブレットコンテナとしてTomcat6.0を使った環境でJAX-RSを使ってみます。 JAX-RSの実装としては、JavaによるRESTfulシステム構築では、Jersey, Apache CXF, JBoss RESTEasyな…

Maven Antrun pluginを使う

S2JDBC-GenのAntタスクを実行するためにMaven Antrun Pluginを使いました。Maven Antrun plugin自体は、これまでも使っていたのですが、普段はMavenの特定のビルドフェーズでAntタスクを実行するために使っていたので、ビルドフェーズに関係なくAntタスクの…

Windowsのサービスとして実行しているTomcatのダンプファイルが作成される場所

実際に確認したことがなかったので試してみました。Windowsのサービスとして実行しているTomcatのJVMが落ちたとき、ダンプファイル(hs_err_pid****.log)はどこにできるのか?? → Tomcatフォルダ直下でした。通常java.exeを実行した際には、カレントディレ…

JSTLでプロパティが存在するかを取得する

ひさびさにJSPを使いました。javascriptでいうところのがundefinedかどうかを調べたいということです。例えばrequestスコープにuserというキーでオブジェクトが格納されている場合に、adminというプロパティが存在しないことがある場合には(あまりこういう…

mime-utilでファイルのMIME Typeを判別する

mime-utilというライブラリを使うと、ファイルの内容からMIME Typeを判別することができます。 MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector"); Collection mimeTypes = MimeUtil.getMimeTypes("foo.pdf"); registerM…

C#からJAX-WSのWebサービスにアクセスしてみる

C#からJAX-WSのWebサービスへのアクセスを試してみます。Windows系の開発はずいぶんご無沙汰なのですっかり忘れているのですが。。まず開発ツールのインストールから。以下のサイトから無償版のVisual C#用をインストールしました。いつの間にかExpressエデ…

JAX-WSでの例外

JAX-WSを使用したWebサービスでサーバ側で例外を投げる場合にはどうすべきなのか試してみました。とりあえず、JavaのコードからWSDLを自動生成してWebサービスを構築した場合(ボトムアップアプローチ?)で試します。JAX-WSやWSDLの仕様を読むべきだと思い…

Tomcat+JAX-WSでWebサービス

JAX-WSを使ったWebサービスを構築するのであれば、標準でJAX-WSをサポートしているGlassfishを使うのが手っ取り早いのですが、今回は既存のプロジェクトへの追加なのでTomcat6+Eclipseを使います。Java環境はJava6です。JAX-WSの実装は、今回はMetro(JAX-WS …

Eclipse(+m2eclipse)でWTPプロジェクトを作成する

Eclipseで動的Webプロジェクト(WTP)を作成するとMavenとことなるディレクトリ構成になるし、m2eclipseを使ってMavenプロジェクトで作成するとWTPが有効にならないしと悩んでいたのですが、、m2eclipseのWTP用Maven統合プラグインを追加する必要がありました…

HtmlUnitを使ってファイルダウンロードのテストをする

SeleniumだとExcelやCSVなどのファイルをダウンロードさせるページのテストで、ダウンロードしたファイルの内容を検証することは難しいですが、HtmlUnitを使えばできます。ファイルのダウンロードというのは、Content-Disposition:attachmentヘッダを返すよ…

Maven経由で実行されるテストにシステムプロパティを渡す

Maven 2.1.0 not passing on system properties to Java virtual machine - Stack Overflow MavenのSurefire plug-inからJUnitのテストケースを実行する際にシステムプロパティを渡す方法です。システムプロパティは以下のようなコードで取得できます。 Syst…

UACの権限昇格ダイアログ

Webアプリケーションの開発を行っているとあまり意識しないのですが、既存のスタンドアロンのJavaプログラムをWindows 7にて動作検証する必要があり、ユーザアカウント制御(UAC)について調査しました。普段はWindows XPを使用しているのでUACに馴染みがなく…

Windowsのバージョンの取得

System.getProperty("os.name"); System.getProperty("os.version"); というコードで取得できるWindowsのOS名とバージョンがどんな感じになるのか、手近にあったPCで試してみました。 OS os.name os.version Windows 2000 Server SP4 Windows 2000 5.0 Windo…

Google Calendar API(2)

Google Calendar API(1) この前は、単に公開カレンダーのフィードを取得するだけだったので、今回はもう少し条件を絞り込んでフィードを取得したいと思います。GoogleのドキュメントではこのページにカレンダーAPIのパラメータについての情報があります。 AP…

RFC1123形式の日付のパース

HTTPヘッダのLast-Modifiedフィールドに設定されて日付をパースする方法のメモです。 DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss zzz", java.util.Locale.US); Date date = df.parse("Fri, 22 May 2009 00:00:00 GMT"); 注意点として…

URLの相対パスから絶対パスへの変換

URL (Java Platform SE 6) HTMLパスのパースをしていて、相対パスで記述されたリンク先URLをに絶対パスに変換する方法を調べたのでメモしておきます。baseがあるとまた違ってくるのかもしれませんが。 URL baseURL = new URL("http://www.example.com/dir1/i…