SalesForceのSOAP APIを使用する場合、wsdlファイルからクライアントサイドコードを生成します。
https://developer.salesforce.com/page/Introduction_to_the_Force.com_Web_Services_Connector
ひとつのプログラムで複数のSalesForceインスタンスにSOAP APIでやりとりする場合、インスタンス毎にクライアントサイドコードを生成します。その際に、パッケージ名が重複しないためのやり方の紹介です。
事前準備
基本的には Force.com Web Service Connector (WSC) を参考にするのがよいです。やり方もすこしずつ改善されているので、最新のやり方はここをみるとよいです。
- mvn
- jdk
- git
生成の仕方
- force-wsc-x.y.z-uber.jarの作成
- wsdlのダウンロード
- コード生成
1. force-wsc-x.y.z-uber.jarの作成
まず、wsdlからコードを生成するためのjarをwscのソースからビルドします。
git clone https://github.com/forcedotcom/wsc.git
mvn clean package -Dgpg.skip -DskipTests
gpgの認証やテストが落ちる場合は、上記のようにしてスキップするためのパラメタを渡します。
ビルドが成功したら、target以下に force-wsc-x.y.z-uber.jar
というjarが生成されます。
2. wsdlのダウンロード
SalesForceのインスタンスにログインし、設定>開発>APIの画面に遷移します。
そこに、wsdlのダウンロードリンクがあります。色々種類がありますが、通常のデータのやりとりならEnterprise WSDLにすれば困ることはないでしょう。
3. コード生成
com.sforce.ws.tools.wsdlc.java のmainメソッドでコードの生成をしています。微調整のためのシステムプロパティに何があるかはここをみるといいです。
パッケージのプレフィックスをつけるには以下のようにします。
java -Dpackage-prefix=XXX -jar target/force-wsc-x.y.z-uber.jar enterprise.wsdl enterprise-XXX.jar
com.sforce.soap.enterprise.XXX というような、パッケージ構成になります。
あとは生成されるjar毎に別ライブラリとして参照するようにすれば、複数インスタンスのクライアントサイドコードを扱えます。