2012-02-22 7 views
2

私の会社は新しいコンテンツ管理システムとしてAdobe CQ5を使用することを検討しており、特定のことを行う方法それと。JSPファイルで使用するための外部JavaライブラリのAdobe/Day CRX(2.2)への追加

私たちがやりたいことの1つは、JSPページ内のスクリプトレットで古いWebアプリケーション用に作成したいくつかのJARを使用し、おそらくサービスなどを呼び出すことです。

私はOSGiバンドルでこれを検討しましたが、私たちがやりたいことではないと思います。 今私は、JSPファイルで使用する外部ライブラリをどこに置くべきかを理解するのに問題があります。

私はちょうど瓶で唯一のものであるジェネリッククラス

package org.company.test; 

import java.lang.String; 

public class TestService{ 
    private String myString; 
    public TestService(String input){myString = input;} 
    public String getMyString(){return myString;} 
} 

を持っているJARを作成しました。

私は/CRX-クイックスタートでそれを入れてみました/サーバー/そのフォルダのREADMEが

は、「すべてのWebアプリケーション間で共有する必要があります。このフォルダ内のライブラリを入れて言う

共通/ libにとサーバー。

私のJSPファイルには、アクセスしようとするといくつかの問題があります。これは、その全体がJSPファイルです:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ TR/html4/loose.dtd"> 
<%%> 
<%@page session="false"%> 
<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.0"%> 
<sling:defineObjects/> 

<%@ page import="javax.jcr.Repository, javax.jcr.Session, javax.jcr.SimpleCredentials, javax.jcr.Node, javax.jcr.NodeIterator, 
       java.net.URLEncoder, java.util.List, java.util.Iterator, javax.jcr.Value, javax.jcr.RepositoryException,org.company.test.TestService;"%> 
<html> 
    <head> 
     <style type="text/css"><jsp:include page="/content/myBlog/style.css"/></style> 
     <!--<link rel="stylesheet" href="/content/myBlog/style.css" type="text/css">--> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
     <% 
      TestService jServ = new TestService("TigerBlood"); 
      String returnValue = "Failed"; 
      if(jServ!=null){ 
       returnValue = jServ.getMyString(); 
      }    
     %> 
     <title><%= returnValue %></title> 
    </head> 
    <body> 
     <a href="/content/myBlog.html" class="imgcontainer"><img src="/apps/myBlog/myBlog.png" width="80px" height="60px" border="0" alt="myBlog" /></a> 
     <h1><%= returnValue %></h1> 
     <div class="body"> 
      <br> 
      <a href="/apps/myBlog/comment.html">Comment</a> 
     </div> 
    </body> 
</html> 

私はブラウザでに移動すると、私はこれらのエラーを取得:

Unable to compile class for JSP: An error occurred at line: 16 in the generated java file Only a type can be imported. org.company.test.TestService resolves to a package 

An error occurred at line: 17 in the jsp file: /apps/myBlog/test.jsp TestService cannot be resolved to a type 
14: <!--<link rel="stylesheet" href="/content/myBlog/style.css" type="text/css">--> 
15: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
16: <% 
17: TestService jServ = new TestService("TigerBlood"); 
18: String returnValue = "Failed"; 
19: if(jServ!=null){ 20: returnValue = jServ.getMyString(); 

An error occurred at line: 17 in the jsp file: /apps/myBlog/test.jsp TestService cannot be resolved to a type 
14: <!--<link rel="stylesheet" href="/content/myBlog/style.css" type="text/css">--> 
15: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
16: <% 
17: TestService jServ = new TestService("TigerBlood"); 
18: String returnValue = "Failed"; 
19: if(jServ!=null){ 
20: returnValue = jServ.getMyString(); 

私が輸入を変更することにより、パッケージについての最初のエラーを修正することができますcom.company.test。*ただし、他の2つのエラーは修正されません。

私はこれがサービスを使うのに最良の「練習」ではないことを知っていますが、私が望むならばそれらのライブラリを使うことができることを示す概念証明を得ることを望んでいました。どんな助けもありがとう。

答えて

2

私は答えを見つけました。外部ライブラリをOSGiバンドルとしてバンドルする必要があります。

プロセスはhere

を見つけることができるその答えを見つけるために驚くほど大変だったし、それだけでJARを追加するよりも時間がかかるのですが、それが動作します。

1

"maven-bundle-plugin"を使用して、Mavenでcqバンドルをビルドします。正しいエクスポート指示で独自のバンドルを作成することができます。

 <groupId>org.apache.felix</groupId> 
     <artifactId>maven-bundle-plugin</artifactId> 


     <configuration> 
      <instructions> 
       <Export-Package> 
        org.company.test.*, 
        com.google.gson.* 
       </Export-Package> 

"Export-Package"タグでは、使用するすべてのパッケージをjspに含める必要があります。

バンドルに外部ジャーを使用する場合は、対応するmaven pomの依存関係を指す必要があります。

gsonの場合:

<dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
    </dependency> 
関連する問題