Caché+ Java + Flex。 パート2

記事の最初の部分では 、Caché+ Javaの組み合わせを調べました。 ここでは、Caché+ Java + Flexの組み合わせを直接実装するプロジェクトの構造、およびその実装に使用されるメインツールとその設定を確認できます。 ここでは、相互作用の一般的なビューのみを示しますが、最後の部分では特定の例を検討することに注意してください。 プロジェクトを構成するモジュールの説明から始め、それらの相互作用の機能に徐々に進みましょう。



プロジェクト構造



プロジェクトは、3つの主要なモジュールで構成されています。

  1. flex -Webインターフェイスの構造、ActionScriptの追加ラ​​イブラリ、および生成されたjavaクラスのActionScriptプロジェクションを記述するmxmlクラスがここにあります。
  2. biz-logic -java -cおよび-mクラス(これらのクラスの詳細については記事の前半で説明しました)、コントローラークラス、およびアプリケーションロジックを担当するインターフェイスクラスが含まれます。
  3. web-application -biz-logicモジュールから生成されたjarファイルとflexモジュールからのswfを保存する生成モジュール。 さらに、このモジュールは、後でWebサーバーでホストされるWAR(WebアプリケーションARchive)を生成します。




さらに、使用されているツールについて少し説明する価値があります。 Apache Tomcatバージョン6.0.35がWebサーバーとして使用されました。 前半で述べたように、 Granite DSフレームワークは、flexとjavaEE RIAアプリケーションの開発と統合のための包括的なソリューションであるJavaとActionScriptを接続するためのメインツールとして使用されます。 flexモジュールとbiz-logicモジュールの両方の設定で接続する必要があります(これを行う方法については後述します)。 プロジェクトのアセンブリを自動化するために、Mavenが選択されました-Javaプロジェクトをアセンブルするためのユニバーサルツール(コンパイル、jarの作成、プログラムの配布パッケージの作成、ドキュメントの生成)。 Mavenはデフォルトで、モジュールごとに個別のPOM(プロジェクトオブジェクトモデル)ファイルを作成し、プロジェクト全体に共通のファイルも作成します。 POMファイルは、構成を構成し、リポジトリーからライブラリーを接続するために使用されます(Mavenの操作の詳細については、 こちらをご覧ください。Mavenの操作については、 Habréで詳しく説明しました )。 以下は、当社が使用する設定の例です。



POMファイルのコンテンツ



各プロジェクトモジュールのPOMファイルの機能をより詳細に検討してみましょう。 Granite DSの設定と、プロジェクションを作成する必要があるJavaクラスへのパスは、 flexモジュールのPOMファイルに書き込まれます。 さらに、使用されるライブラリもここにバインドされます。 例えば
このコードは、投影するファイルを指定するために使用され、GraniteDSの多くの設定も含まれています。
<execution> <goals> <goal>generate</goal> <!— --> </goals> <configuration> <generatorToUse>graniteds21</generatorToUse> <!— --> <baseOutputDirectory>${project.build.directory}/generated- sources</baseOutputDirectory> <!—   --> <outputDirectory>${project.build.directory}/../src/main/flex </outputDirectory> <!—      --> <extraOptions> <tide>true</tide> <uid>uid</uid> <entityFactory>org.granite.generator.as3.BVEntityFactory </entityFactory> <outputEnumToBaseOutputDirectory>false </outputEnumToBaseOutputDirectory> </extraOptions> <includeJavaClasses> <include>edu.samples.sample.domain.**</include> <!—  ,    --> <include>edu.samples.sample.services.I*Service</include> <!—  ,     --> </includeJavaClasses> </configuration> </execution>
      
      







次のコードもflexモジュールのPOMファイルにあり、リポジトリからGraniteライブラリを接続する方法を示しています。

 <dependency> <!—  --> <groupId>org.graniteds</groupId> <artifactId>granite-core</artifactId> <!—  --> <version>${graniteds.version}</version> </dependency>
      
      





biz-logicモジュールのPOMファイルには、jarファイルを生成するためのパラメーターが示されています。



さらに、Cachéで動作するようにcachedbおよびcachejdbcライブラリを接続する必要があります(これらのライブラリはEnsembleおよびCaché製品のjarファイルとして提供されます。デフォルトでは、これらは「... \ dev \ java \ lib \ JDK16 \」にあります)。

この場合、ライブラリファイルはローカルで指定されます。
 <dependency> <!— ()   --> <groupId>cache.cachedb</groupId><!—  --> <artifactId>cachedb</artifactId> <type>jar</type> <!—  --> <version>${cachedb.version}</version> <!—  --> <scope>system</scope> <!— --> <systemPath>C:/soft/javalibs/cachedb.jar</systemPath> <!—  ---> </dependency> <dependency> <groupId>cache.cachejdbc</groupId> <artifactId>cachejdbc</artifactId> <version>${cachejdbc.version}</version> <type>jar</type> <scope>system</scope> <systemPath>C:/soft/javalibs/cachejdbc.jar</systemPath> </dependency>
      
      







WebアプリケーションモジュールのPOMファイルでは、biz-logicモジュールで以前に生成されたjarファイルのバインド、および生成されたファイルの出力ディレクトリ、warコンパイラライブラリ(maven-compiler-plugin、 maven-war-plugin、maven-dependency-plugin)。 swfファイルを生成するためのオプションも指定する必要があります。

Webアプリケーションモジュールの構成
 <plugin> <!—    --> <groupId>org.sonatype.flexmojos</groupId> <artifactId>flexmojos-maven-plugin</artifactId> <version>${flexmojos.version}</version> <configuration> <stripVersion>true</stripVersion> </configuration> <executions> <execution> <goals> <goal>copy-flex-resources</goal> <!—   --> </goals> <configuration> <artifactItems> <artifactItem> <!—      swf--> <groupId>edu.sample</groupId> <artifactId>flex</artifactId> <type>swf</type> <!—   swf--> <overWrite>true</overWrite> <!— --> <destFileName>sample.swf</destFileName><!—   --> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin>
      
      







プロジェクトのビルド順序は次のとおりです。biz-logicモジュールのjavaクラスがコンパイルされ、GraniteDSを使用してActionScriptプロジェクションが生成され、flexモジュールに配置されます。 その後、flexモジュールがコンパイルされ、org.sonatype.flexmojosプラグイン(Flexが提供)を使用して、.swfファイルが生成されます。 使用されるライブラリとともに、構成ファイルで指定されたパスに従ってサーバーに配置されます。 生成された.swfファイルと.jarファイル、および使用されているライブラリに基づいて、.warファイルが生成されます。

.warファイルの構成
 <properties> <!—  --> <war.name>sample</war.name><!—  war---> <catalina.home>C:\Program Files\Apache Software Foundation\Tomcat 6.0</catalina.home> <!--  ,     war--> <skipTests>true</skipTests> </properties> <build> <finalName>sample</finalName> <testSourceDirectory>src/test/java</testSourceDirectory> <plugins> <!--   --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <soure>1.6</soure> <target>1.6</target> </configuration> </plugin> <!—    war--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>${war.name}</warName> </configuration> </plugin> <!—   --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.1</version> <executions> <execution> <id>copy</id> <phase>install</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>edu.sample</groupId> <artifactId>web-application</artifactId> <version>1.0</version> <type>war</type> <overWrite>true</overWrite> <destFileName>${war.name}.war</destFileName> <outputDirectory>${catalina.home}\webapps\ </outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build>
      
      







すべての設定が完了したら、Flex + Java +Cachéの相互作用のメカニズムを直接調べ始めることができます。



相互作用のメカニズムの一般的なビューFlex + Java +Caché



まず、すべてのFlex + JavaインタラクションはActionScriptプロジェクションを経由します。その中には、格納されたクラス(Java-mクラス)のプロジェクションに加えて、アプリケーションロジックを担当するサーバーインターフェイスのプロジェクションクラスがあります。 初期化中にWebアプリケーションがブラウザ(クライアント側)で起動されると、サーバーサービスインターフェイスを実装するオブジェクトが作成されます(この場合、これはuserServiceオブジェクトです)。 これにより、多数のflex + javaが引き続き発生します。 格納されたオブジェクトに対して操作を実行するには、userServiceの対応するメソッドが呼び出されます。 サーバー上の特定の条件が正常に通過した場合、Cachéデータベースでも変更が行われます。



さらに、記載されているバンドルをGranite DSを通じて実装するには、次の条件が満たされている必要があります。

  1. クラスはSerializableインターフェイスを実装する必要があります。
  2. 投影されたクラスは、特別なGranite DS構文を使用する必要があります。 たとえば、投影されたプロパティのget()およびset()メソッドの場合、以下の例に示すように、@ ExternalizedPropertyタグを使用し、投影されたクラス自体の@ExternalizedBeanを使用する必要があります。


 @ExternalizedBean(type=DefaultExternalizer.class) public class mCicl implements Serializable { … @ExternalizedProperty public List<mDiscipline> getListOfDisc() { return listOfDisc; } public void setListOfDisc(List<mDiscipline> listOfDisc) { this.listOfDisc = listOfDisc; } … }
      
      





Java表記を忘れないでください。 そのため、たとえば、プロジェクションで大文字を使用してプロパティに名前を付ける場合、このプロパティにはgetおよびsetメソッドのないプライベートアクセス修飾子があります。



前述のように、flexモジュールはサーバーのサービス(@Service)のインターフェイス(@RemoteDestination)を使用するため、biz-logicモジュールにはこのインターフェイスの適切な実装が必要です。 たとえば、投影されたインターフェイスクラスの場合

 @RemoteDestination public interface IUserService { … void delOneDisc(Integer i); … }
      
      





実装を詳しく説明する必要があります

 @Service public class UserService implements IUserService { … @Override public void delOneDisc(Integer i) { objT.deleteOneDisc(i); } … }
      
      





この部分を要約すると、ここでは特定の例に焦点を当てずに、インターフェイスとプロジェクションを介したCache + Java + Flexの相互作用の一般的なメカニズム、およびそれらに必要な設定のみを説明したと言えます。 したがって、 記事の次の部分では、特定の実用的な例にさらに注意を払います。 特に、バンドル全体でのコレクションの変換と、データベースからブラウザへ、またはその逆へのオブジェクトの転送の例を検討します。



All Articles