以下の条件に該当するInterstage Application Server V6.0/V5.1のCORBA/SOAPゲートウェイを移行する場合、下記の対処を実施してください。
■条件
下記の条件に該当するCORBAの構造体型/例外型、または、EJBアプリケーションのクラス型/例外型を、SOAPで送信または受信している場合。
名前の最初の1文字目が小文字であり、2文字目が大文字である公開メンバを持つ
例1)CORBAの構造体型の場合(IDL) ------------------------------------------------------------------------------- module xxxModule { struct xxxStruct { long aParam; /*1文字目が小文字であり、2文字目が大文字*/ }; }; -------------------------------------------------------------------------------
例2)EJBアプリケーションのクラス型の場合(Java) ------------------------------------------------------------------------------- public class xxxData implements java.io.Serializable { public String aParam; /*1文字目が小文字であり、2文字目が大文字*/ } -------------------------------------------------------------------------------
■対処方法
本バージョン・レベルでEJBアプリケーションを再配備またはIDLコンパイルにおいてCORBA/SOAPゲートウェイを再生成した場合、SOAPのインタフェース上で該当するメンバ名が移行前と異なったメンバ名で生成されます。再配備または再生成/再IDLコンパイルを行う場合は、下記のA)またはB)のいずれかの方法で対処してください。
SOAPの通信先で該当する構造体のメンバ名の1文字目を大文字として処理しているかを確認し、該当する場合は1文字目を小文字として処理するように修正します。
例) AParam → aParam
EJBアプリケーションを再配備またはCORBA/SOAPゲートウェイの再生成およびIDLコンパイルを行う前に、IDL上(CORBA)またはJava上(EJB)のメンバ名の1文字目を大文字に変更します。
例) aParam → AParam
Interstage Application Server V5.1(Interstage V5.1)では、以下のMIMEタイプの添付ファイルを受信した場合、javax.activation.DataHandlerオブジェクトとして取得後、同オブジェクトのgetContentメソッドからjava.io.InputStreamオブジェクトが返り値として返りました。
image/jpeg, image/gif
multipart/*
text/xml, application/xml
Interstage Application Server V5.1.1(Interstage V5.1.1)以降では、それぞれ、以下のオブジェクトが返り値として返ります。
java.awt.Imageオブジェクト
javax.mail.internet.MimeMultipartオブジェクト
javax.xml.transform.Sourceオブジェクト
Interstage V5.1.1以降でjavax.activation.DataHandlerオブジェクトから添付ファイルのデータをjava.io.InputStreamオブジェクトとして取得するには、javax.activation.DataHandlerオブジェクトに対して、getContentメソッドではなく、以下のメソッドを使用してください。
------------------------------------------------------------------------------- public InputStream getInputStream() throws IOException -------------------------------------------------------------------------------
上記のようにjavax.activation.DataHandlerオブジェクトの動作が異なるため、Interstage V5.1で開発した添付ファイルを扱うRPCアプリケーションは、以下のどちらかの方法で移行する必要があります。
■RPCアプリケーションを移行する場合
以下にRPCアプリケーションを移行するコーディング例を示します。
移行前 ------------------------------------------------------------------------------- DataHandler dh = ...; // 引数 java.io.InputStream is = (java.io.InputStream)dh.getContent(); -------------------------------------------------------------------------------
移行後 ------------------------------------------------------------------------------- DataHandler dh = ...; // 引数 java.io.InputStream is = dh.getInputStream(); -------------------------------------------------------------------------------
■Interstage Application Server V5.1互換環境で実行する場合
Interstage管理コンソールの[システム] > [ワークユニット] > [IJServerワークユニット名を選択] > [環境設定]タブ > [ワークユニット設定]の“JavaVMオプション”に以下のプロパティを設定します。
プロパティ | 指定可能な値 |
---|---|
-Dcom.fujitsu.interstage.soapx.DataHandlerMode=値 |
|
以下の条件に該当するInterstage Application Server V5.0(Interstage V5.0)以前のSOAPサーバアプリケーションを移行する場合、下記のA)またはB)のいずれかの方法で対処してください。
■条件
以下のデータ型を受信している場合、または以下のデータ型を構造体のメンバまたは配列で使用している場合。
com.fujitsu.interstage.soap.util.Base64
com.fujitsu.interstage.soap.util.Base64Binary
com.fujitsu.interstage.soap.util.UnsignedInt
com.fujitsu.interstage.soap.util.UnsignedShort
com.fujitsu.interstage.soap.util.UnsignedLong
com.fujitsu.interstage.soap.util.UnsignedByte
■対処方法
下記のA)またはB)のいずれかの方法で対処してください。
該当するRPCサーバアプリケーションのWebサービス情報ファイルを用意します。
Webサービス情報ファイルがない場合は、以下のようにして取得してください。
例)
-------------------------------------------------------------------------------
soapmodifydd -query -url http://localhost:12000/soap_admin/servlet/WSContainer -urn urn:old-app > oldappwsdl.xml
-------------------------------------------------------------------------------
soapmodifyddコマンドについては、“リファレンスマニュアル(コマンド編)”を参照してください。
1.のWebサービス情報ファイル(上例の場合oldappwsdl.xml)のserviceタグ配下に以下の内容のtypeMappingタグを追加します。
------------------------------------------------------------------------------- <typeMapping qname="xsd:base64Binary" xmlns:xsd="http://www.w3.org/2001/XMLSchema" languageSpecificType="com.fujitsu.interstage.soap.util.Base64Binary" serializer="com.fujitsu.interstage.soapx.encoding.ser.V50Base64SerializerFactory" deserializer="com.fujitsu.interstage.soapx.encoding.ser.V50Base64DeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping qname="soapenc:base64" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" languageSpecificType="com.fujitsu.interstage.soap.util.Base64" serializer="com.fujitsu.interstage.soapx.encoding.ser.V50Base64SerializerFactory" deserializer="com.fujitsu.interstage.soapx.encoding.ser.V50Base64DeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping qname="xsd:unsignedInt" xmlns:xsd="http://www.w3.org/2001/XMLSchema" languageSpecificType="com.fujitsu.interstage.soap.util.UnsignedInt" serializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberSerializerFactory" deserializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping qname="xsd:unsignedShort" xmlns:xsd="http://www.w3.org/2001/XMLSchema" languageSpecificType="com.fujitsu.interstage.soap.util.UnsignedShort" serializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberSerializerFactory" deserializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping qname="xsd:unsignedLong" xmlns:xsd="http://www.w3.org/2001/XMLSchema" languageSpecificType="com.fujitsu.interstage.soap.util.UnsignedLong" serializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberSerializerFactory" deserializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping qname="xsd:unsignedByte" xmlns:xsd="http://www.w3.org/2001/XMLSchema" languageSpecificType="com.fujitsu.interstage.soap.util.UnsignedByte" serializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberSerializerFactory" deserializer="com.fujitsu.interstage.soapx.encoding.ser.V50UnsignedNumberDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> -------------------------------------------------------------------------------
soapmodifydd コマンドで編集したWebサービス情報ファイルを登録し直します。
例)
-------------------------------------------------------------------------------
soapmodifydd -set -url http://localhost:12000/soap_admin/servlet/WSContainer oldappwsdl.xml
-------------------------------------------------------------------------------
Webサービスコンテナを運用モード(employ)で運用している場合は、Webサービスコンテナが動作しているワークユニットを再起動します。
Interstage V5.1以降で提供されているデータ型については、Interstage V9.1.0の“SOAPサービス ユーザーズガイド”の“サポートされるデータ型”を参照してください。
例)
変更前
-------------------------------------------------------------------------------
int serviceMethod(com.fujitsu.interstage.soap.util.Base64 bindata,
com.fujitsu.interstage.soap.util.UnsignedInt serialNo)
-------------------------------------------------------------------------------
変更後
-------------------------------------------------------------------------------
int serviceMethod(byte[] bindata,
com.fujitsu.interstage.soapx.types.UnsignedInt serialNo)
-------------------------------------------------------------------------------
バックアップコマンドによる移行は、バックアップ(issoapbackup、issoaprestore)コマンド実行時に、Interstage Application Server V5.0/V4.x(Interstage V5.0/V4.x)と同じディレクトリにWebサービス情報管理ファイルを移行できます。
バックアップコマンドの詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。
■はじめに
Webアプリケーション環境設定(web.xml)で指定したWebサービス情報管理ファイルが、以下のディレクトリ下にある場合は、バックアップコマンドで移行可能です。異なる場合はバックアップコマンドでInterstage SOAPサービス資源の移出と移入を行った後、“8.5.4.4 Webサービス情報管理ファイルの移行-soapdd2wsddコマンドによる移行”を行ってください。
%IS_HOME%\F3FMsoap\etc\DeployService |
/opt/FJSVsoap/etc/DeployService |
■移行手順
バックアップ先のディレクトリがC:\Backupの場合の操作例を以下に示します。
Webサーバを停止します。
Interstage管理コンソール用Servletサービスを停止します。
C:\Interstage\F3FMjs2su\bin\jssvstop
バックアップ用ディレクトリを作成します。
mkdir C:\Backup
issoapbackupコマンドを実行して、Webサービス資源ファイルをバックアップします。
issoapbackup -d C:\Backup
バックアップ先のディレクトリが/Backupの場合の操作例を以下に示します。
Webサーバを停止します。
Interstage管理コンソール用Servletサービスを停止します。
/opt/FJSVjs2su/bin/jssvstop
バックアップ用ディレクトリを作成します。
mkdir /Backup
issoapbackupコマンドを実行して、Webサービス資源ファイルをバックアップします。
issoapbackup -d /Backup
バックアップ先のディレクトリがC:\Backupの場合の操作例を以下に示します。
Webサーバを停止します。
Interstageを停止します。
isstop -f
Interstage管理コンソール用Servletサービスを停止します。
C:\Interstage\F3FMjs2su\bin\jssvstop
issoaprestoreコマンドを実行して、ISAPS5.0/4のWebサービス資源ファイルを新バージョンにリストアします。
issoaprestore -d C:\Backup
バックアップ先のディレクトリが/Backupの場合の操作例を以下に示します。
Webサーバを停止します。
Interstageを停止します。
isstop -f
Interstage管理コンソール用Servletサービスを停止します。
/opt/FJSVjs2su/bin/jssvstop
issoaprestoreコマンドを実行して、ISAPS5.0/4のWebサービス資源ファイルを新バージョンにリストアします。
issoaprestore -d /Backup
■移行結果の確認
以下のファイルにWebサービス情報管理ファイルのWebサービス毎に移行結果が出力されます。
C:\Interstage\F3FMsoap\log\logdd2wsdd.txt |
/opt/FJSVsoap/log/logdd2wsdd.txt |
同名のWebサービス識別名が存在していた場合、移行しなかったWebサービスのWebサービス情報をファイルに出力します。
C:\Interstage\F3FMsoap\log\log_same.wsdd |
/opt/FJSVsoap/log/log_same.wsdd |
ここでは、Interstage Application Server V5.0/V4.x(Interstage V5.0/V4.x)の他システムからsoapdd2wsddコマンドによる移行手順について説明します。
なおsoapdd2wsddコマンドの詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。
■はじめに
Interstage V5.0/V4.xのシステム運用で使用していた(移行する)Webサービス情報管理ファイルのディレクトリ名を確認しておいてください。
■移行手順
以下に移行手順を示します。
Interstage V5.0/V4.xシステムのWebサーバを停止します。
Interstage V5.0/V4.xのServletサービスを停止します。
ネットーワーク(FTP等)を経由、もしくは外部媒体を使用してWebサービス情報管理ファイルをInterstage V5.0/V4.xシステムから新バージョンのシステムに転送します。
本バージョン・レベルのWebサーバを停止します。
本バージョン・レベルのInterstageを停止します。
isstop -f
本バージョン・レベルのInterstage管理コンソール用Servletサービスを停止します。
C:\Interstage\F3FMjs2su\bin\jssvstop
soapdd2wsddコマンドを使用して、ISAPS5.0/4のWebサービス情報を変換します。変換先のWebサービス情報管理ファイルに、変換元と同名のWebサービス識別名が存在した場合は、上書きせずにsoapdd2wsddコマンド実行ディレクトリにlog_same.wsddを出力します。
soapdd2wsdd -none -i C:\tmp\deppath -sf log_same.wsdd -info C:\tmp\logdd2wsdd.txt
■移行手順
以下に移行手順を示します。
Interstage V5.0/V4.xシステムのWebサーバを停止します。
Interstage V5.0/V4.xシステムのServletサービスを停止します。
ネットーワーク(FTP等)を経由、もしくは外部媒体を使用してWebサービス情報管理ファイルをInterstage V5.0/V4.xシステムから新バージョンのシステムに転送します。
本バージョン・レベルのWebサーバを停止します。
本バージョン・レベルのInterstageを停止します。
isstop -f
本バージョン・レベルのInterstage管理コンソール用Servletサービスを停止します。
/opt/FJSVjs2su/bin/jssvstop
soapdd2wsddコマンドを使用して、Interstage V5.0/V4.xのWebサービス情報を変換します。変換先のWebサービス情報管理ファイルに、変換元と同名のWebサービス識別名が存在した場合は、上書きせずにsoapdd2wsddコマンド実行ディレクトリにlog_same.wsddを出力します。
soapdd2wsdd -none -i /tmp/deppath -sf log_same.wsdd -info /tmp/logdd2wsdd.txt
■移行結果の確認
soapdd2wsddコマンドの-infoオプションで指定したファイルに移行結果が出力されます。-infoオプションを省略した場合は、標準出力に出力されます。
同名のWebサービス識別名が存在していた場合、移行しなかったWebサービス情報をファイルに出力します。
移行モードが-noneオプションと-sfオプションを指定した場合は、同名のWebサービス識別名が存在していたために移行しなかったWebサービス情報を-sfオプションで指定したファイルに出力します。