#chiroito ’s blog

Java を中心とした趣味の技術について

Oracle Application Express 5.1 のインストール

Oracle Application Express (APEX) は、Webブラウザだけでアプリケーションが開発できる無償のツールです。アプリケーション開発者はセキュリティ、認証、データベース連携、入力検証、セッション管理等を気にせず開発できます。作成したアプリケーションはエクスポートして、クラウド上やオンプレ上のデータベースの一部として実行されます。

APEX は Oracle Database が無くても次の URL から無料で評価目的として使用できます。

Oracle Application Express
(手順はこちらhttps://blogs.oracle.com/oracle4engineer/entry/apex)

ここでは Oracle Database 12c 上に 最新版の APEX 5.1 をインストールします。

前提条件

  • Oracle Database 12.1.0.2.0
  • Oracle Database の SID はpdb1
  • Oracle Application Express(APEX) 5.1をインストール
  • APEXのインストール先ディレクトリは/opt/oracle
  • Oracle HTTP Server*1(OHS) は使用しない
  • Oracle REST Data Services (ORDS)は使用しない

今回の構成は次のようにOracle Database だけで構築します。 f:id:chiroito:20170227134628p:plain

以下のように、ユーザとDatabase の間に OHS を挟む構成ではありません。

f:id:chiroito:20170227134951p:plain

*1:Apache HTTP ServerベースのWebサーバ

続きを読む

JAX-WS アプリケーションの開発(スタブの自動作成、スタブの使用)

JAX-WS のクライアントから次のJAX-WSのクラスを使用するまでの流れを紹介します。

package chiroito.jaxws;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class JaxWsSample {

    @WebMethod
    public String hello() {
        return "Hello World";
    }
}

JAX-WS のクライアントはスタブを使用することでサービスへアクセスします。クライアントの開発者は次の手順でサービスへアクセスするアプリケーションを作成します。

  1. WSDLの確認
  2. クライアントでスタブの自動作成
  3. クライアントアプリでスタブを使用

WSDL の確認

クライアントが使用するスタブを自動生成するには WSDL が必要です。上記クラスを含んだアプリケーションをデプロイして WSDL を確認しましょう。
WSDL はブラウザで専用の URL へアクセスすることで確認できます。この URL はhttp://<APサーバ>/<アプリのコンテキストルート>/JaxWsSampleService?wsdlになります。今回は、アプリケーションサーバをlocalhost:7001で動かし、コンテキストルートはweblogic-jaxwsに設定しているため次の URL にアクセスします。
http://localhost:7001/weblogic-jaxws/JaxWsSampleService?wsdl

WSDL の URL が分からない場合は、アプリケーションサーバが Oracle WebLogic Server では、Administration Console を使うことで WSDL の一覧を見られます。 左側のメニューで[デプロイメント]を選択すると、デプロイされているアプリケーションの一覧が表示されるので、上記クラスが含まれているアプリケーションを選択して設定画面へ進みます。設定画面の[概要]タブが表示されているので、画面上部の[テスト]タブを選択するとアプリケーションの[テスト・ポイント]の一覧が表示されるので上記クラスのテスト・ポイントである[?WSDL]を選択しましょう。

今回は以下の WSDL が作成されています。

<definitions
 xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
 xmlns:wsp="http://www.w3.org/ns/ws-policy" 
 xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" 
 xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:tns="http://jaxws.chiroito/" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns="http://schemas.xmlsoap.org/wsdl/" 
 targetNamespace="http://jaxws.chiroito/"
 name="JaxWsSampleService">
  <types>
    <xsd:schema>
      <xsd:import namespace="http://jaxws.chiroito/"
 schemaLocation="http://localhost:7001/weblogic-jaxws/JaxWsSampleService?xsd=1"/>
    </xsd:schema>
  </types>
  <message name="hello">
    <part name="parameters" element="tns:hello"/>
  </message>
  <message name="helloResponse">
    <part name="parameters" element="tns:helloResponse"/>
  </message>
  <portType name="JaxWsSample">
    <operation name="hello">
      <input wsam:Action="http://jaxws.chiroito/JaxWsSample/helloRequest" message="tns:hello"/>
      <output wsam:Action="http://jaxws.chiroito/JaxWsSample/helloResponse" message="tns:helloResponse"/>
    </operation>
  </portType>
  <binding name="JaxWsSamplePortBinding" type="tns:JaxWsSample">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="hello">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="JaxWsSampleService">
    <port name="JaxWsSamplePort" binding="tns:JaxWsSamplePortBinding">
      <soap:address location="http://localhost:7001/weblogic-jaxws/JaxWsSampleService"/>
    </port>
  </service>
</definitions>

クライアントでスタブの自動作成

JDK に含まれているwsimportコマンドを使用して WebService に接続するスタブを作成します。Java のソースファイル(-Xnocompile)を指定したディレクトリ(-s <生成先ディレクトリ>)に作成し、既存のコードがあれば残します(-keep)。指定したパッケージ(-p <生成先パッケージ>)として WSDL に記載されているクラスを作成します。

wsimport -Xnocompile -s <生成先ディレクトリ> -keep -p <生成先パッケージ>  <WSDLのURL>

今いる場所から相対パスでsrc/main/javaの位置に、otherapp.jaxws.stubパッケージとしてJaxWsSampleServiceのスタブを作成するには下記の様に実行します。

wsimport -Xnocompile -s src/main/java -keep -p otherapp.jaxws.stub http://localhost:7001/weblogic-jaxws/JaxWsSampleService?WSDL
WSDLを解析しています...
コードを生成しています...

スタブとして以下のソースコードが作成されます。

ls src/main/java/otherapp/jaxws/stub
Hello.java  HelloResponse.java  JaxWsSample.java  JaxWsSampleService.java  ObjectFactory.java  package-info.java

クライアントアプリでスタブを使用

作成されたスタブは下記の様にクライアント側のアプリケーションで使用することが出来ます。

package otherapp.jaxws;

import otherapp.jaxws.stub.JaxWsSample;
import otherapp.jaxws.stub.JaxWsSampleService;

import javax.enterprise.context.RequestScoped;
import javax.xml.ws.WebServiceRef;

@RequestScoped
public class JaxWsSampleClient {

    @WebServiceRef(JaxWsSampleService.class)
    private JaxWsSample service;

    public String hello() {
        return service.hello();
    }
}

IntelliJ IDEA と WebLogic Server で Java EE 開発

IntelliJ IDEA と Oracle WebLogic Server を使用して Java EE の Web アプリケーションを開発するまでの手順です。最後に開発時間を短縮する Tips もあります。

前提条件

Oracle WebLogic Server 12.2.1.2.0 (以降 WebLogic Server)のインストールと構成ウィザード(config.cmd)を使用してドメインの作成が完了している必要があります。 インストールと構成ウィザードの手順はこちらにまとまってます。
Oracle WebLogic Server 12c管理のための5つのポイント

必要な情報

WebLogic Serverのインストール時と構成ウィザード実行時に入力した下記の情報が必要です。

  • インストール時に指定した Oracle ホーム (今回の例ではC:\Oracle\Middleware\fm12212)
  • 構成ウィザードで指定したドメインの場所 (今回の例ではC:\Oracle\Middleware\fm12212\user_projects\domains\intellij_domain)
  • 構成ウィザードで指定した名前 (今回の例ではweblogic)
  • 構成ウィザードで指定したパスワード (今回の例では具体的な値は出てきません。)

手順

必要な手順は以下の 3 つだけです。

  1. 実行環境の登録
  2. アプリケーションの作成
  3. Run/Debug の設定

1. 実行環境の登録

はじめに、IntelliJ IDEA に実行環境として WebLogic Server を登録します。

[File]-[Settings]を選択して[Settings]ダイアログを表示します。左側のメニューで[Build, Execution, Development]-[Application Servers] と選択すると下図の画面が表示されます。

f:id:chiroito:20170201182913p:plain

上の[]ボタンを選択すると様々なアプリケーションサーバがリスト形式で表示されます。その中から[WebLogic Server] を選択すると、WebLogic Server のダイアログが表示されます。
※ リストに WebLogic Server が無い場合には WebLogic Integration プラグインをインストールして下さい。

f:id:chiroito:20170201183029p:plain

WebLogic Home はインストール時に指定した[Oracle ホーム]を指定します。これを指定するとWebLogic Version は自動で設定されるので、[OK]ボタンを押します。先ほどの画面に設定が反映され、バージョンにあわせた名前が設定されます。

f:id:chiroito:20170201183145p:plain

実行環境の登録はこれで終わりなので[OK]ボタンを押します。

2. アプリケーションの作成

[File]-[New]-[Project…]を選択して[New Project]ダイアログを表示します。

f:id:chiroito:20170201200038p:plain

[Java Enterprise]を選択すると、Project SDK (JDK) 、Java EE のバージョン、アプリケーションサーバが選択できます。JDKは Java SE 8、Java EE は 7 を指定し、アプリケーションサーバは先ほど登録したものを選択します。 今回は Webアプリケーションを作成するので アプリケーションライブラリとフレームワークは [Web Application]を選択します。 [Next]を押すとプロジェクトの名前や保存先を指定します。プロジェクトの名前は SampleWebAppとして保存先は任意の場所を指定します。

3. Run/Debug の設定

最後に、作成したアプリケーションを動かしましょう。アプリケーションサーバを起動する設定のために[Run]-[Edit Configurations…]を選択して[Run/Debug Configurations]ダイアログを表示します。

f:id:chiroito:20170201182501p:plain

アプリケーションを作成するときに WebLogic Server を指定したので、左側のメニューに登録した名前と同一の WebLogic Server が作られ、いくつか設定されていますのでこれを選択します。

f:id:chiroito:20170201201229p:plain

ここでは Userに構成ウィザードで指定した名前、Passwordに構成ウィザードで指定したパスワードを入力します。Domain Pathに構成ウィザードで指定したドメインの場所を選択します。

[Deployment] タブでアプリケーションがデプロイされる設定になっていることを念のため確認しましょう。 f:id:chiroito:20170201200822p:plain

[OK]を押して反映した後は他のアプリケーション同様に起動やデバッグをすると WebLogic Server が起動します。

Tips

アプリケーション開発中はソースファイルを変更しては反映する作業が多くあります。WebLogic Server はホットデプロイに対応しているので、再起動無しに最新のクラスファイルをリロードできます。

ソースコードを修正後に[Build]-[Build Project]などでビルドするとと変更されたクラスファイルを直ぐにリロードするかをダイアログに問われます。[Yes] を選択することでリロードされます。

f:id:chiroito:20170201201739p:plain

反映が成功すると下の方に緑色の表示があります。

f:id:chiroito:20170201201904p:plain

アプリケーションを再起動しないと反映できないものがいくつかあります。この様な場合には、緑色ではなく赤色の表示で反映に失敗した旨表示されます。その場合には Ctrl+F10で再デプロイすると WebLogic Server 自体は再起動せず、アプリケーションだけ更新できます。

f:id:chiroito:20170201202011p:plain