JBoss と Jackrabbit の連携
以前、Tomcat から Jackrabbit を使うやり方を調べたが、今度は JBoss で似たような事をやってみる。ここでは リソースアダプタ版の jackrabbit を使って JCA 経由で試してみる。
■ 使うもの
・JBoss 5.1 GA
・Eclipse 3.5 Galileo
・jackrabbit-jca-1.6.0.rar [
download]
■ 準備
■ 構築- Dynamic Web Project 作成。ここではプロジェクト名=hello-jcr-warとした。
- [New]/[Other...]/[Servlet] で HelloJcaServlet を作成。
public class HelloJcaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Resource(mappedName = "java:jcr/local")
Repository repo;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Session session = null;
try {
session = repo.login(new SimpleCredentials(
"username", "password".toCharArray()));
Node root = session.getRootNode();
if (!root.hasNode("hello/world")) {
root.addNode("hello").addNode("world")
.setProperty("message", "Hello, World!");
session.save();
}
Node node = root.getNode("hello/world");
response.getWriter().println(
node.getProperty("message").getString());
} catch (Exception ex) {
response.getWriter().println(ex.getMessage());
} finally {
if (null != session) session.logout();
}
}
}
■ 実行- hello-jcr-war を JBoss サーバにデプロイして起動
- ブラウザで http://localhost:8080/hello-jcr-war/HelloJcrServlet を開く
- 「Hello, World!」が表示されるのを確認
■ 補足
@Resource の使用箇所で、本当は mappedName ではなく「@Resource(name="jcr/HelloJCR")」のように論理名にしたかったが、jboss-web.xml や web.xml でマッピングを指定しても効果がなく、どうしても「mappedName じゃなきゃ嫌だ」とJBoss がゴネ続ける。ファイル名をベタ書きしてるみたいな感じでまずい気がするが、未解決。
0 件のコメント:
コメントを投稿