峯文さんの投稿
AsJavaに投稿されました 続きを読む

概要

SLD(System Landscape Directory,システムランドスケープディレクトリ) は、システム間連携を行うシステムの情報を一元管理するためのもので、システムの技術情報(サーバ名など)やソフトウェアカタログ情報(利用ソフトウェア製品、リリースなど)を保持しています。

SLD はシステムランドスケープにインストールされているすべてのシステムコンポーネントの集中情報プロバイダとして機能します。

SLDサーバはすべての SAP Web Application Server Java のインストールにおいてインストールされますが、機能させる場合には明示的に有効化される必要があります。

形態

SLD は、HTTPでアクセスできるサーバアプリケーションであり、AsJava上で動作します。

連携

SLDに登録されているシステムは、デフォルトで12時間毎に自システムの情報をSLDに送信するようにしています。

機能

以下の機能をもっております。

  • サーバ情報管理
  • ソフトウェア情報管理
  • 名前予約管理

ツール

SLDの管理機能をアクセスするには、以下の方法があります。

ホーム

製品とソフトウェアコンポーネント


システムとサーバ

AsJavaに投稿されました 続きを読む

サービス提供側とサービス消費側を分けてそれぞれ説明します。

サービス提供側

サービスやサービスグループを定義します。

システム

分類

サービス

サービスグループ

サービス消費側

システムプロバイダ定義

サービスを提供するプロバイダーシステムのサーバ情報を定義します。































































ネットワークとインターネットに投稿されました 続きを読む

このトピックでは、標準技術としてのWebサービスの基礎知識を取り上げて説明します。

Webサービスには広義と狭義の二つがあります。

広義の「Webサービス」は、WEB通信を利用した、プログラミングでアクセス可能なサービスのすべてが含められます。
一方、狭義の「Webサービス」は、SOAP(Simple Object Access Protocol)やWSDL(Web Services Description Language)ベースのWebサービスに限定されます。SOAP/WSDLサービスと呼ぶことができます。
Webサービスという名前も、このSOAP/WSDLサービスから初めて使われたものと考えられます。

WEBサービス(広義)を実現する基礎技術としては、古典的な技術を代表するこのSOAPとWSDLのほかに,昨今急速に普及してきたREST(Representational State Transfer)があります。RESTベースのWEBサービスはRESTfulサービスと呼ばれております。
http://www.ibm.com/developerworks/jp/webservices/library/ws-restful/

高機能で複雑のSOAP/WSDLサービスと比べると、RESTfulサービスはシンプルで簡単に利用可能であるため、現在、後者のほうがWeb全体で広く受け入れられるようになっています。
とはいえ、歴史のこともあるため、とくに企業向けの大規模なシステムは、まだまだSOAP/WSDLサービス技術で構築されているほうが多いと考えられます。

このトピックやカテゴリは、狭義の「Webサービス」のみを対象としているため、特別な説明がない限り、文書に記述されている「Webサービス」という用語はすべて狭義の「Webサービス」を指しております。

Webサービスは、主に以下のような特徴があります。

  • プラットフォーム独立 
    HTTP、SMTP、XML等の標準仕様を積極的に活用しているため、Webサービスの実装は特定のプラットフォームや言語に依存しません。 
    異なるプラットフォームで実装されているWebサービスは標準仕様に従って簡単に相互接続ができます。
  • 実行時に動的に連携
    WEBサービスは実行時に動的に連結されます。よってサービス指向アーキテクチャ(SOA)に従えば柔軟性、敏捷性(agile)とも優れる疎結合分散アプリケーション環境が簡易に実現できます。

WEBサービス連携の流れは以次の三つの部分からなります。

  1. 登録
    サービスを提供する側は、サービスの接続情報をどこかに登録しておきます。
  2. 接続情報の検索 
    サービスを使用する側は、サービスを利用するための接続情報をどこかで検索します。開発時と実行時の二つの場面があります。
  3. 接続
    サービスを使用する側は、サービス接続情報を利用して、サービスを提供する側に接続して、サービスを利用します。

WEBサービスの関連仕様は以下のものがあります。

  • SOAP
    メッセージフォーマットに関する仕様
  • WSDL
    サービス界面仕様の記述フォーマットに関する仕様
  • UDDI
    サービス連携をサポートするディレクトリに関する仕様および実装
  • WSIL
    UDDI の代替であり、また UDDI に対する補足でもあるサービス・ディスカバリー機構

SOAP

SOAP(Simple Object Access Protocol)とは、非集中、分散環境における情報交換のための軽量のプロトコルです。SOAPのメッセージはXMLを用いて符号化します。
SOAPは次の3つの部分から成ります。

  • SOAPエンベロープ構成要素
    何がメッセージの中にあるのか、誰がそれを処理すべきなのか、それは選択可能か必須かどちらなのかといったことを表現するための全体の枠組みを定義しています。
  • SOAP符号化(encoding)規則
    アプリケーションが定義したデータ型のインスタンスをやりとりするための直列化(serialization)のメカニズムを定義しています。
  • SOAP RPC表現
    RPCとそのレスポンスを表現するための規約を定義しています。

WSDL

WSDL(Web Services Description Language)とは、Webサービスを記述するための、XMLをベースとした言語仕様です
WSDLサービス定義仕様で用いられる概念は以下のものがあります。

  • サービス(service)
  • ポート(port)
  • バインディング(binding)
  • ポートタイプ(portType)
  • 操作(operation)
  • メッセージ(mssage)
  • タイプ(types)

UDDI

UDDI(Universal Description, Discovery and Integration)とは、Webサービス用の検索システムのことです。
Webサービス公開者はUDDIレジストリにWebサービスの情報(どういうサービスか、どこにあるのか、誰のものか、など)を登録し、Webサービス利用者はUDDIレジストリに対して検索をし目的に合致したWebサービスを探し出すという仕組みです。

インターネット上で一般に公開するパブリックUDDIと、企業のイントラネット内などの閉じたネットワーク上で使用するプライベートUDDIに分類されます。

WSIL

WSIL(Web Service Inspection Language)とは、大掛かりなUDDI検索と手軽なWSDL交換の中間で、簡便で使いやすく、かつ、拡張可能なネットワーク上でのサービス検索の手段を提供するものです。

WSILは、直接、Webサービスを記述するのではなく、Webサービスを記述したWSDLへの参照や、Webサービスを登録したUDDIへの参照を記述したXMLドキュメントです。いわば、WSDLやUDDIを経由すれば、利用可能なWebサービスの一覧表を提供しようという試みです。

J2EEに投稿されました 続きを読む

このトピックでは、JavaEEの概要を取り上げて説明します。

Java EEとは、Java言語の機能セットの一つで、サーバや企業の情報システム、大規模システムなど向けの機能をまとめたもの。J2EEはバージョン5.0までの旧称で、以降はJava EEと呼ばれる。

  • JavaSE
  • JavaME
  • JavaEE

Java EEにはJava SEの機能がすべて含まれるほか、サーバなどで利用されるEJB(Enterprise JavaBeans)やサーブレット(Java Servlet)、JSP(Java Server Pages)、JSF(Java Server Faces)、JNDI(Java Naming and Directory Interface)、JTA(Java Transaction API)など数多くの機能が規定されている。

JavaEEが初めて登場したのは1999年のことです。当時は「Java 2 Platform, Enterprise Edition(J2EE)」と呼ばれており、最初のバージョンは1.2でした。

JavaEEの最新バージョンは、2013年6月にリリースされたJava EE 7です。また現在、世界中の企業システムで広く利用されているのは、2009年12月にリリースされたJavaEE6です。

JavaEE仕様を準拠したサーバ製品はおもに以下のようなものがあります。

No.製品最新バージョン(2015)ベンダー
1Tomcat-オープンソース
2Jetty-オープンソース
3Weblogic-Oracle
4JBoss-オープンソース
5Websphere-IBM

JavaEEアプリケーションは,複数の,EJB-JAR,Webアプリケーション,ライブラリJARと,一つのDD(application.xml)で構成されます。
JavaEEサーバで実行できるJavaEEアプリケーションは,アーカイブ形式のJavaEEアプリケーション,および展開ディレクトリ形式のJavaEEアプリケーションです。

  • EJB-JAR
    EJB-JARは,EJB-JARファイル形式でパッケージ化されています。複数のEnterprise Beanと一つのDD(ejb-jar.xml)で構成されます。なお,Enterprise Beanでアノテーションを使用している場合は,DD(ejb-jar.xml)は不要です。
  • Webアプリケーション
    Webアプリケーションは,WARファイル形式でパッケージ化されています。複数のサーブレット,JSP,HTMLと一つのDD(web.xml)で構成されます。
  • ライブラリJAR
    ライブラリJARは,JARファイル形式でパッケージ化されたものです。複数の共通ライブラリから構成されています。共通ライブラリはJ2EEアプリケーション中のJ2EEコンポーネントが共通で使用できるライブラリです。JavaEEアプリケーションのDD(application.xml)の<module>タグ以下に定義されているファイル以外で,拡張子が小文字(.jar)のJARファイルがライブラリJARとみなされます。
J2EEに投稿されました 続きを読む

JavaEE6

下記のリンクをご参考ください。

http://codezine.jp/article/detail/5698

JavaEE5

JavaEE5は以下の仕様から構成されます。

  • Web Services Technologies
  • Implementing Enterprise Web Services (JSR 109)
  • Java API for XML-Based Web Services (JAX-WS) 2.0 (JSR 224)
  • Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101)
  • Java Architecture for XML Binding (JAXB) 2.0 (JSR 222)
  • SOAP with Attachments API for Java (SAAJ) (JSR 67)
  • Streaming API for XML (JSR 173)
  • Web Service Metadata for the Java Platform (JSR 181)
  • Web Application Technologies
  • Java Servlet 2.5 (JSR 154)
  • JavaServer Faces 1.2 (JSR 252)
  • JavaServer Pages 2.1 (JSR 245)
  • JavaServer Pages Standard Tag Library (JSR 52)
  • Enterprise Application Technologies
  • Enterprise JavaBeans 3.0 (JSR 220)
  • J2EE Connector Architecture 1.5 (JSR 112)
  • Common Annotations for the Java Platform (JSR 250)
  • Java Message Service API (JSR 914)
  • Java Persistence API (JSR 220)
  • Java Transaction API (JTA) (JSR 907)
  • JavaBeans Activation Framework (JAF) 1.1 (JSR 925)
  • JavaMail (JSR 919)
  • Management and Security Technologies
  • J2EE Application Deployment (JSR 88)
  • J2EE Management (JSR 77)
  • Java Authorization Contract for Containers (JSR 115)

J2EE 1.4

J2EE 1.4は以下の仕様から構成されます。

  • J2EE Connector Specification 1.5
  • J2EE Deployment API Specification 1.1
  • J2EE Management Specification 1.0
  • Enterprise JavaBeans Specification 2.1
  • Enterprise JavaBeans to CORBA Mapping 1.1
  • Java API for XML Processing Specification 1.2
  • Java API for XML Registries Specification 1.0
  • Java API for XML-based RPC Specification 1.1
  • Java Authorization Contract for Containers 1.0
  • Java IDL API
  • Java Naming and Directory Interface Specification 1.2.1
  • Java Message Service Specification 1.1
  • Java Servlet Specification 2.4
  • Java Transaction API Specification 1.0.1B
  • Java Transaction Service Specification 1.0
  • JDBC Specifications, 3.0, 2.1, and Optional Package API (2.0)
  • JavaBeans Activation Framework Specification 1.0.2
  • JavaMail API Specification 1.3
  • JavaServer Pages Specification 2.0
  • RMI over IIOP
  • SOAP with Attachments API for Java Specification 1.2

J2EE 1.3

J2EE 1.3は以下の仕様から構成されます。

  • JDBC Extension 2.0
  • Java Naming and Directory Interface Specification (JNDI) 1.2
  • Java API for XML Processing (JAXP) 1.1
  • Java Servlet 2.3
  • JavaServer Pages (JSP) 1.2
  • JavaServer Pages Standard Tag Library (JSTL) 1.0
  • Enterprise JavaBeans (EJB) 2.0
  • J2EE Connector Architecture 1.0
  • Java Message Service API (JMS) 1.0
  • Java Transaction API (JTA) 1.0
  • JavaMail API 1.2
  • JavaBeans Activation Framework (JAF) 1.0
  • Java Authentication and Authorization Service (JAAS) 1.0

 

JavaVMに投稿されました 続きを読む

このトピックでは、JavaVMのメモリ管理の仕組を取り上げて説明します。


JavaVMのメモリ構成はかきにようになります。

  • OS固有領域
    • Cヒープ領域
      JavaVM自身が使用する領域です。JNIで呼び出されたネイティブライブラリでも使用されます。
    • スタック領域
      Javaスレッド毎に保持するスタックの領域です。
  • JavaVM固有領域
    • Permanent領域
      ロードされたclassなどの情報が格納される領域です。
    • Javaヒープ
      JavaVM上で起動するJavaプログラムのリソースを管理する領域。New領域
      • New領域
        新規オブジェクトと閾値(-XX:MaxTenuringThreshold)未満のオブジェクトが配置されます、Young領域とも呼ばれるます。
        • Eden領域
          新規のオブジェクトが配置されます。
        • From領域
          CopyGC(ScavengeGC、マイナーGC)が実行された際に、使用中のオブジェクトはここへコピーされます。
        • To領域
          CopyGC(ScavengeGC、マイナーGC)が実行された際に、使用中のオブジェクトはここへコピーされます。
      • Old領域
        New領域で閾値(-XX:MaxTenuringThreshold)を超えたオブジェクトが配置されます、Tenured領域とも呼ばれるます。

種類

Javaでは、「Scavenge GC」と「Full GC」という2種類のガベージ・コレクションが実行されます。Scavenge GCはNEW領域のみを対象とした短時間で終了するガベージ・コレクションであり、頻繁に実施されます。一方、Full GCはNEWとOLD両方の領域を対象とした大がかりなガベージ・コレクションであり、比較的低い頻度で実施されます。

タイミング

以下のタイミングでGCが実施されます。

  • ヒープメモリ中に新規オブジェクトを作成するために必要な空き領域が足りなくなったとき
  • プログラム中でSystem.gc()が実行されたとき
  • JavaVMで実行する処理がなくなってアイドル状態になったとき

下記オプションで定期的なGCを設定することができます。

  • -Dsun.rmi.dgc.server.gcInterval
    JDK6デフォルト3600000(1時間))
  • -Dsun.rmi.dgc.client.gcInterval
    JDK6デフォルト3600000(1時間))

メモリを割り当てる必要があるが、割り当てられるメモリが存在しないとき、OutOfMemoryErrorが発生します
例として、OutOfMemoryErrorが発生するケースを取り上げます。

  • New領域が溢れた場合
  • Old領域が溢れた場合
  • 参照されつづけるオブジェクトが大量に存在する場合に溢れる。
  • Cヒープが溢れた場合
    Javaのスレッドが大量に作成された場合に溢れます、Cヒープが溢れてOutOfMemorryErrorが発生した場合、スタックトレースの先頭が「Native Method」です。
    スレッド数はOSのパラメタで設定されており、それが大きな値で設定されている場合に発生します。

ソフトウェア開発に投稿されました 続きを読む

ソフトウェアの品質特性は大きく6つに分類され、それぞれの英語の頭文字をとってFRUEMP特性とも呼ばれています。

機能性

機能性とは、必要な機能を満たしているかということです

信頼性

信頼性とは、指定された条件の下で正しく動くかということです。

使用性

使用性とは、使いやすさを表します。

効率性

率性とは、スピードとサイズに関する性能です。

保守性

保守性とは、修正のしやすさです。

移植性

移植性とは、実行する環境の移行のしやすさを表します。
テクニカルに投稿されました 続きを読む

このトピックでは、Pegaでの文字列処理の方法を取り上げて説明します。

文字列型(Pega type: Text)は、Pega内部でJavaのString型を使用し表現されます。

チェック処理

Pega標準で用意された関数を一部抜粋します。

  • @isDouble(inputString)
    文字列が有効な倍精度数を表しているかどうかをチェックします。
  • @isInteger(inputString)
    文字列が有効な整数を表しているかどうかをチェックします。
  • @isLiteral(inputString)
    入力がリテラルかプロパティ参照かをチェックします。

検索処理

Pega標準で用意された関数を一部抜粋します。

  • @indexOf(strStringToSearch,strStringToSearchFor)
    strStringToSearchForにstrStringToSearchが最初に現れたインデックスを返します。値が見つからない場合は -1 を返します。
  • @substring(stringToUse,startIndex,endIndex)

    文字列のインデックスは0から数えられます。

変換処理

Pega標準で用意された関数を一部抜粋します。

  • @toDate(inputString)
    文字列を日付型に変換します。
  • @toDateTime(inputString)
    文字列を日時型に変換します。
  • @toDecimal(inputString)
    文字列を数値型に変換します。
  • @toInt(inputString)
    文字列を整数型に変換します。
  • @toLowerCase(inputString)
    文字列をすべt小文字に変換します。
  • @toUpperCase(inputString)
    文字列をすべて大文字に変換します。

編集処理

Pega標準で用意された関数を一部抜粋します。

  • @replaceAll(aBaseString,aOriginalChars,aNewChars)
    文字列aBaseStringのサブ文字列aOriginalCharsをaNewCharsに置き換えて返します。
  • @trim(str)
    strの頭と後ろのスペースを削除して返します。

補足

テキスト関連のPega標準関数はおもに「String」というライブラリで纏めて公開されているため、Designer StudioのRecordsブラウザで確認できます。

テクニカルに投稿されました 続きを読む

このトピックでは、Pegaにおける日付の処理方法を纏めて説明します。

Pegaでは内部的にBigDecimal(com.ibm.icu.math.BigDecimal)型を使用して、日付の値(1970/01/01からの日数)を保持しています。

なお、YYYYMMDD形式の文字列として日付型プロパティの値を読み書きできます。

但し、から文字列を設定する場合、プロパティの値が自動的に1970101に設定されるため、「空白」の表示にするには、設定処理自体をしないようにしましょう。

計算処理

(日付の加減算を行う)

指定された日付より何日前又は、何日後の日付を計算するには、addDays()関数を使用します。

  • 構文
    @(Pega-RULES: BusinessCalendar).addDays(startDate, daysToAdd, useBusinessCalendar, calendarName)

  • 例1: @(Pega-RULES: BusinessCalendar).addDays("20190808",30,false,Default)   ⇒ 20190907
    例2: @(Pega-RULES: BusinessCalendar).addDays("20190808",-9,false,Default)   ⇒ 20190730  

(日数を求める)

二つの日付の間の日数を計算するには、differenceBetweenDays()関数を使用します。

  • 構文
    @differenceBetweenDays(firstDate, secondDate, useBusinessCalendar, calendarName)

  • @differenceBetweenDays("20190808","20190701",false,DEFAULT)  ⇒ 38 

(月の末日を取得する)

Calendar cal = Calendar.getInstance();
DateTimeUtils dtu = ThreadContainer.get().getDateTimeUtils();  
//get info of date in parameter
cal.setTime(dtu.parseDateTimeString(theDate));
calc.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));  
Date lastDate = c.getTime();  
return dtu.formatDateTime(dtu.formatDateTimeStamp(lastDate),"yyyyMMdd",null,null);

チェック処理

(営業日かどうかをチェック)

営業日かどうかをチェックするには、isBusinessDay()関数を使用します。

  • 構文
    @isBusinessDay(theDate,  calendarName)

  • 例1: @isBusinessDay("20190803",DEFAULT)  ⇒ true     // 土曜日、法定休日でないため、営業日扱い 
    例2: @isBusinessDay("20190804",DEFAULT)   ⇒ false   // 日曜日


JavaVMに投稿されました 続きを読む

JavaVMとは

JavaVM(Java仮想マシン、Java Vitrual Machine、JVM)とは、Javaプログラムを実行するためのソフトウェアのことです。

JavaVMはWindowsやUnix、linux、MacOSなどのOSの上に動作するものですので、環境OS毎にそれぞれ異なる実装が作成されます。

それによって、Javaプログラムは「Write once, run anywhere」(WORA、一度書けば、どこでも実行できる)という特徴があり、特にプラットフォームに依存しません。

以下の図でそれらの階層関係を示します。


JREとJDK

JRE(Java Runtime Environment)とは、Javaプログラムの実行環境です。JavaVMとJavaプログラム実行に必要なライブラリが含まれています。

JDK(Java Development Kit)とは、Javaプログラムの開発環境です。JDKにはJREとJavaプログラムの開発に必要なツールなどが含まれています。

クラス

Javaプログラムの基本構成単位はクラスです。

コンパイルでネイティブ・コードを作成する C や C++ などの言語は、通常、ソース・コードをコンパイルした後、リンクを行う必要があります。このリンク処理では、ソース・ファイルを別々にコンパイルして得られたコードおよび共有のライブラリー・コードをマージして、1個の実行プログラムが作成されます。

クラスのリンクは、別個の手順としてではなく、JVM がクラスをメモリーにロードする際の処理の一部として行われます