おはようございます。ロジカル・アーツ株式会社のSE 輪島 幸治です。
Eclipse IDEを使用して、JavaプログラムからSalesforceに連携するプログラム作成方法をご紹介させて頂きます。 既存のJava開発プロジェクトでのSalesforce連携などにご検討下さい。
この記事では、使用ライブラリ(外部JARファイル)の取得方法について取り扱います。
Javaプログラムにおけるライブラリについて
JavaからSalesforceに連携するプログラムの作成方法については、 公式のSalesforce 開発者サイトに、開発者ドキュメントが用意されております。
・Java 開発者環境の設定 developer.salesforce.com
開発者ドキュメントにて使用ライブラリ一覧は、既に用意されておりますが、ライブラリの配布先から最新バージョンのライブラリをダウンロードして、 サンプルプログラムで実行した場合に、最新バージョンでは適切に動作しない場合があります。*1 このため、この記事では、2021年4月7日時点で、Eclipse IDEにて使用した場合に、 サンプルコードを使用できるバージョンの外部JARファイルの取得手順をご紹介をさせて頂いています。
開発者リンク
・Java 開発者環境の設定 - HttpClient および JSON フレームワークのインストール (REST ベースの API) developer.salesforce.com
・Java 開発者環境の設定 - Eclipse のインストール developer.salesforce.com
Eclipse IDE
さて、このブログ記事ではIDEとしてEclipseを使用します。 Eclipseは、Javaで開発を行う際の統合開発環境 (IDE) です。
Eclipse エクリプス / イクリプス
オープンソースで開発されているソフトウェア統合開発環境(IDE)。主に、Java言語を使用した開発をターゲットとしているが、プラグインを追加することによりC/C++やRuby、FlexなどJava以外の開発環境としても使用されている。
この記事では、開発者ドキュメントに記載のIDEであるEclipseを使用して説明をさせて頂きます。
Eclipse IDEは、図1にあるように開発者ドキュメントに記載のhttp://www.eclipse.org/downloads
というリンクからIDEはダウンロードできます。
www.eclipse.org
この記事では、日本語版のEclipse IDEにて検証を行いたいため、図2のhttps://mergedoc.osdn.jp/
というリンクから、Pleiades All in One EclipseというEclipse IDEをダウンロードして、検証を行います。Eclipse IDEについては、最新バージョンのEclipse 2021を使用して頂いても問題はないと思いますが、外部JARファイルと同様に安定バージョンであるEclipse 2020を使用させて頂きます。[Eclipse 2020]を押下します。
Javaの[Full Edition]のDownloadからIDEをダウンロードします。
項目名 | URL |
---|---|
Eclipse IDE | http://www.eclipse.org/downloads |
Pleiades All in One Eclipse | https://mergedoc.osdn.jp/ |
Eclipseを使用したことがない方などコンポーネント名が不明な方はEclipseのユーザインターフェースのガイドラインがありますので、参考にしてみて下さい。
Javaライブラリ(HttpComponents・JSON In Java)の取得
まず取得するJavaライブラリですが、開発者ドキュメントのJava開発者環境の設定 - REST環境の確認(RESTベースのAPI)を確認すると、REST API連携用のサンプルJavaプログラムのソースコードが確認できます。
・REST 環境の確認 (REST ベースの API) developer.salesforce.com
ソースコード内のimport文
の記載にorg.apache.http
及びorg.json
という記載が確認でき、
HttpClient及びJSON フレームワークがインポートで指定されていることが分かります。
このため、EclipseでJavaプログラムからSalesforceに連携するためには、HttpClient及びJSON フレームワークを事前に取得しておき、 ライブラリで外部JARファイルとして、使用する設定を行う必要があることがわかります。
この記事ではHttpComponents、JSONの取得方法について記載させて頂きます。
HttpComponents
まず、HttpClientの取得を行います。
HttpClientの取得先のリンクであるhttp://hc.apache.org/downloads.cgi
を押下して、
Apache HttpComponentsのダウンロードページを開きます。
項目名 | URL |
---|---|
HttpClientの取得先 | http://hc.apache.org/downloads.cgi |
Apache HttpComponentsのダウンロードページを開きましたら、 HttpClient及びHttpCoreのセクションにて、最新バージョンのBinaryが提供されていることを確認します。
この記事では、最新バージョンのBinaryは使用せず、 HttpClient及びHttpCoreのBinaryファイルのバージョンを指定して取得する手順を記載させて頂いています。
Apache HttpComponentsのダウンロードページを下にスクロールして、
Older releasesセクションにあるOld releases are available from the archives
の
archives
のリンクから、ダウンロードファイルのarchivesページを開きます。
ダウンロードファイルのarchivesページを開くと、ダウンロードを行う[httpclient]及び[httpcore]のリンクがあることを確認します。
HttpClientのダウンロードから行います。 archivesページにて、ダウンロードするライブラリのリンクを確認したら、[httpclient]を押下します。
[HttpComponents Client]画面が表示されたら、[binary]を押下します。
安定版のバージョンをダウンロードするためにLast modified
が2013-09-11 08:15
となっている
httpcomponents-client-4.2.6-bin.zip
のHttpClientファイルをダウンロードします。
ダウンロードが完了したら、HttpCoreファイルのダウンロードを行います。 再度、ダウンロードファイルのarchivesページを開き、次は、[httpcore]のリンクを押下します。
[HttpComponents Core]画面が表示されたら、[binary]を押下します。
安定版のバージョンをダウンロードするためにLast modified
が2013-08-01 18:36
となっている
httpcomponents-core-4.2.5-bin.zip
のファイルをダウンロードします。
項目名 | 該当バージョンのファイル名 |
---|---|
Http Components | httpcomponents-core-4.2.5-bin.zip |
各ファイルのダウンロードが完了したら、使用するファイルであるcommons-codec-1.6.jar
、httpclient-4.2.6.jar
、
httpcore-4.2.5.jar
をEclipseの外部JARファイルで読み込めるように、同じフォルダに格納しておきます。
ファイル名 | 説明 |
---|---|
commons-codec-1.6.jar |
HttpClientで使用するJARファイル(1) |
httpclient-4.2.6.jar |
HttpClientで使用するJARファイル(2) |
httpcore-4.2.5.jar |
HttpCoreで使用するJARファイル |
HttpClient及びHttpCoreの取得方法については、以上です。
JSON In Java
HttpClient及びHttpCoreのダウンロード完了後、JSON In Javaのダウンロードを行います。
JSON In Javaの取得先のリンクであるhttp://mvnrepository.com/artifact/org.json/json
を押下して、
Maven RepositoryにあるJSON In Javaのダウンロードページを開きます。
Maven RepositoryにあるJSON In Javaのページでは、 Version[20210307]のダウンロードリンクを押下します。
Filesセクションにあるbundleのリンクを押下します。
ダウンロードしたファイルから、外部JARファイルにて使用するjson-20210307.jar
のファイルを確認します。
項目名 | 該当バージョンのファイル名 |
---|---|
JSON In Java | json-20210307.jar |
Javaライブラリ(Commons-logging)
Commons-loggingについても、最新バージョンのCommons-loggingの取得方法をご紹介したいと思います。
Apache Logging Componetを開いて、[Download]を押下します。
Download Apache Commons Loggingのページが表示されましたら、Binariesセクションにある
Apache Logging Componetの最新版バイナリファイルであるcommons-logging-1.2-src.zip
をダウンロードします。
項目名 | 該当バージョンのファイル名 |
---|---|
Commons-logging | commons-logging-1.2-src.zip |
ダウンロードした圧縮ファイルを解凍して、外部JARファイルで使用するcommons-logging-1.2.jar
を確認します。
Commons-loggingの取得方法については、以上です。
ダウンロードしたEclipse IDEにて使用する外部JARファイル
インポート前に使用するバイナリファイルを確認します。
まとめ
以上で、Salesforce Rest API連携用 Javaプログラム(Eclipse IDE) 設定の使用ライブラリ(外部JARファイル)の用意は、完了です。
用意されたJARファイルを使用して、Eclipse IDEにて、外部JARファイルとして読み込むことで、 Salesforceと連携するJavaプロジェクトを作成できます。
Javaプログラムで連携できるようになると、既存のエンタープライズアプリケーションで 数多く使用されているプログラミング言語から、SalesforceにAPI連携が行えるようになります。
続きは、Salesforce Rest API連携用 Eclipse 設定(3)にてご紹介させて下さい。
よろしくお願いいたします。
付録
Rest API疎通確認用ソースコード
開発者ドキュメントにて紹介されているソースコードです。 最新バージョンのソースコードは、開発者ドキュメントをご確認下さい。
Java 開発者環境の設定 - REST 環境の確認 (REST ベースの API
REST 環境の確認 (REST ベースの API) - GitHub Gist
package sfdc_rest; import java.io.IOException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.util.EntityUtils; import org.apache.http.client.ClientProtocolException; import org.json.JSONObject; import org.json.JSONTokener; import org.json.JSONException; public class Main { static final String USERNAME = "YOUR DEVORG USERNAME"; static final String PASSWORD = "YOUR DEVORG PASSWORD + SECURITY TOKEN"; static final String LOGINURL = "https://login.salesforce.com"; static final String GRANTSERVICE = "/services/oauth2/token?grant_type=password"; static final String CLIENTID = "YOUR OAUTH CONSUMER KEY"; static final String CLIENTSECRET = "YOUR OAUTH CONSUMER SECRET"; public static void main(String[] args) { DefaultHttpClient httpclient = new DefaultHttpClient(); // Assemble the login request URL String loginURL = LOGINURL + GRANTSERVICE + "&client_id=" + CLIENTID + "&client_secret=" + CLIENTSECRET + "&username=" + USERNAME + "&password=" + PASSWORD; // Login requests must be POSTs HttpPost httpPost = new HttpPost(loginURL); HttpResponse response = null; try { // Execute the login POST request response = httpclient.execute(httpPost); } catch (ClientProtocolException cpException) { // Handle protocol exception } catch (IOException ioException) { // Handle system IO exception } // verify response is HTTP OK final int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { System.out.println("Error authenticating to Force.com: "+statusCode); // Error is in EntityUtils.toString(response.getEntity()) return; } String getResult = null; try { getResult = EntityUtils.toString(response.getEntity()); } catch (IOException ioException) { // Handle system IO exception } JSONObject jsonObject = null; String loginAccessToken = null; String loginInstanceUrl = null; try { jsonObject = (JSONObject) new JSONTokener(getResult).nextValue(); loginAccessToken = jsonObject.getString("access_token"); loginInstanceUrl = jsonObject.getString("instance_url"); } catch (JSONException jsonException) { // Handle JSON exception } System.out.println(response.getStatusLine()); System.out.println("Successful login"); System.out.println(" instance URL: "+loginInstanceUrl); System.out.println(" access token/session ID: "+loginAccessToken); // release connection httpPost.releaseConnection(); } }
この記事について
この記事は、著者が技術調査した結果を、ロジカル・アーツ株式会社のブログにて記事化したものです。
記載されている会社名、商品名などは一般に各社の商標または登録商標です。なお、本文中には、™、®を明記しておりません。
成長が著しい業界であることから、機能更新も早くご紹介したドキュメントの内容などは、予告なく変更される場合もあります。
記事に至らない箇所もあると思いますが、お気付きの点がありましたらSalesforceに関する内容については、弊社やアプリケーション提供元ベンダーにお問い合わせ下さい。
ご紹介の関連アプリケーションについては、アプリケーション提供元ベンダーやアプリケーション提供元ベンダーのパートナー様にお問い合わせ下さい。
よろしくお願いいたします。
*1:外部JARファイルがバージョンアップした際に、サンプルコードに影響がある場合など。 例:HttpClient4.2.6→HttpClient4.3.xにバージョンアップなど