Java
JAX-RSでは、権限のあるユーザのみリソースにアクセスすることを可能にするために、アノテーションによる宣言型の記述とプログラマティックな処理をのためのAPIがあります。アノテーションを使う場合には、特定のロールを持つユーザのみ許可するのであれば、…
このエントリの続きです。パラメータが多い場合には、対応するメソッドの引数が増えてしまうので、引数をDTOにまとめたいという話です。 例えば、id, foo, bar, bazという引数があるメッソッドで、これらの引数を以下のようなDTOにしてクエリパラメータやパ…
すごい今更ですけど、10/17にJJUG CCC 2011 fall に行ってきました。基調講演の途中から参加しました。会場の国立オリンピック記念青少年総合センター初めて行ったので迷ってしまった。。 G-2 基調講演 JavaOne報告会 Part.2 JavaOne 2011 Report View more …
サーバーサイド 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シリアライズ対象外のプロパティを指定する (1) こちらの続きです。JAX-RS(Jersey)でJavaオブジェクトをJSON形式に変換する際に、@XmlTransientをつけて対象外のプロパティを指定しましたが、今回はJacksonMixInAnnotationsを使用する方法を試し…
WebアプリケーションのテストにSeleniumを使っていますが、少し前になりますがSelenium 2が正式にリリースされたので試しています。Selenium 2は、WebDriverベースとなりアーキテクチャ的にも大きく変更されています。Selenium RCで使用していたSeleniumServ…
Content-TypeもContent-Dispositionの設定も問題ないはずなのにIEでのみ、PDFファイルのブラウザ内での表示ができずにダウンロードダイアログが表示されてしまう。 レスポンスヘッダのContent-Typeにいつの間にかcharsetが付加されていることが原因でした。 …
GlassfishでWebアプリケーションからOSGiバンドルを利用する 前回のサンプルでは、Webアプリケーション自体はwarとしてディプロイし、依存するサービスをOSGiバンドルとしてディプロイして@Resourceでインジェクションしていました。今回は、アプリケーショ…
Javaでtarファイルを操作する場合には、Commons Compressを使用するのが簡単そうです。Commons Compresは他にもbzip2やgzipにも対応しています。サイトのサンプルとJavadocを見ればだいたいの使い方はわかると思いますが。 File[] filesToArchive = {file1, …
JavaからWindowsのレジストリにアクセスするライブラリについて調査したのでまとめておきます。いくつかのライブラリがありますが、基本的にはJNI経由でWin32 APIを呼び出しています。 Roxes Win32 for Java (Orangevolt Ant Tasksの一部) JRegistry SWT(Ecl…
Build Number Maven Pluginを使うと、pom.xmlでプロパティとしてSCMのリビジョン番号${buildNumber}を使用できるようになります。 前提 内部的にsvnコマンドを実行するのでsubversionのバイナリがインストールされている必要があります。TortoiseSVN不可です…
具体的には、GUIにSWTを使っているJavaのデスクトップアプリケーションで、プラッtフォームによってSWTのjarを変更したいというシチュエーションです。SWTのjarファイルには、それぞれのプラットフォーム用のDLL(Windowsの場合)が含まれているので、x86 or x…
@QueryParamアノテーションで、パラメータをインジェクトすることができますが(パラメータに含まれない場合はnullになる)、パラメータがあまりに多いとメソッドシグネチャが見にくくなり、値をBeanにコピーしたりするのも面倒です。このような場合には、、 @…
引き続きJerseyについて調査しています。JerseyでレスポンスとしてJavaのオブジェクトをJSONに変換する場合には、いくつか方法があります。 POJOを直接変換する JAXB経由で変換する JSONObjectを生成する Jersey 1.5 User Guide - Chapter 5. JSON Support …
JaveEE6に対応しているGlassfish 3.0を使う方が手っ取り早いとは思いますが、、サーブレットコンテナとしてTomcat6.0を使った環境でJAX-RSを使ってみます。 JAX-RSの実装としては、JavaによるRESTfulシステム構築では、Jersey, Apache CXF, JBoss RESTEasyな…
S2JDBC-GenのAntタスクを実行するためにMaven Antrun Pluginを使いました。Maven Antrun plugin自体は、これまでも使っていたのですが、普段はMavenの特定のビルドフェーズでAntタスクを実行するために使っていたので、ビルドフェーズに関係なくAntタスクの…
実際に確認したことがなかったので試してみました。Windowsのサービスとして実行しているTomcatのJVMが落ちたとき、ダンプファイル(hs_err_pid****.log)はどこにできるのか?? → Tomcatフォルダ直下でした。通常java.exeを実行した際には、カレントディレ…
ひさびさにJSPを使いました。javascriptでいうところのがundefinedかどうかを調べたいということです。例えばrequestスコープにuserというキーでオブジェクトが格納されている場合に、adminというプロパティが存在しないことがある場合には(あまりこういう…
mime-utilというライブラリを使うと、ファイルの内容からMIME Typeを判別することができます。 MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector"); Collection mimeTypes = MimeUtil.getMimeTypes("foo.pdf"); registerM…
C#からJAX-WSのWebサービスへのアクセスを試してみます。Windows系の開発はずいぶんご無沙汰なのですっかり忘れているのですが。。まず開発ツールのインストールから。以下のサイトから無償版のVisual C#用をインストールしました。いつの間にかExpressエデ…
JAX-WSを使用したWebサービスでサーバ側で例外を投げる場合にはどうすべきなのか試してみました。とりあえず、JavaのコードからWSDLを自動生成してWebサービスを構築した場合(ボトムアップアプローチ?)で試します。JAX-WSやWSDLの仕様を読むべきだと思い…
JAX-WSを使ったWebサービスを構築するのであれば、標準でJAX-WSをサポートしているGlassfishを使うのが手っ取り早いのですが、今回は既存のプロジェクトへの追加なのでTomcat6+Eclipseを使います。Java環境はJava6です。JAX-WSの実装は、今回はMetro(JAX-WS …
Eclipseで動的Webプロジェクト(WTP)を作成するとMavenとことなるディレクトリ構成になるし、m2eclipseを使ってMavenプロジェクトで作成するとWTPが有効にならないしと悩んでいたのですが、、m2eclipseのWTP用Maven統合プラグインを追加する必要がありました…
SeleniumだとExcelやCSVなどのファイルをダウンロードさせるページのテストで、ダウンロードしたファイルの内容を検証することは難しいですが、HtmlUnitを使えばできます。ファイルのダウンロードというのは、Content-Disposition:attachmentヘッダを返すよ…
Maven 2.1.0 not passing on system properties to Java virtual machine - Stack Overflow MavenのSurefire plug-inからJUnitのテストケースを実行する際にシステムプロパティを渡す方法です。システムプロパティは以下のようなコードで取得できます。 Syst…
Webアプリケーションの開発を行っているとあまり意識しないのですが、既存のスタンドアロンのJavaプログラムをWindows 7にて動作検証する必要があり、ユーザアカウント制御(UAC)について調査しました。普段はWindows XPを使用しているのでUACに馴染みがなく…
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(1) この前は、単に公開カレンダーのフィードを取得するだけだったので、今回はもう少し条件を絞り込んでフィードを取得したいと思います。GoogleのドキュメントではこのページにカレンダーAPIのパラメータについての情報があります。 AP…
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 (Java Platform SE 6) HTMLパスのパースをしていて、相対パスで記述されたリンク先URLをに絶対パスに変換する方法を調べたのでメモしておきます。baseがあるとまた違ってくるのかもしれませんが。 URL baseURL = new URL("http://www.example.com/dir1/i…