Blogical

AWS/Salesforceを中心に様々な情報を配信していきます(/・ω・)/

Salesforce Rest API連携用 Javaプログラム(Eclipse IDE) 設定(2) - 使用ライブラリ(外部JARファイル)の用意

おはようございます。ロジカル・アーツ株式会社の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

hc.apache.org

mvnrepository.com

Eclipse IDE

さて、このブログ記事ではIDEとしてEclipseを使用します。 Eclipseは、Javaで開発を行う際の統合開発環境 (IDE) です。

atmarkit.itmedia.co.jp

Eclipse エクリプス / イクリプス

オープンソースで開発されているソフトウェア統合開発環境IDE)。主に、Java言語を使用した開発をターゲットとしているが、プラグインを追加することによりC/C++RubyFlexなどJava以外の開発環境としても使用されている。

この記事では、開発者ドキュメントに記載のIDEであるEclipseを使用して説明をさせて頂きます。 Eclipse IDEは、図1にあるように開発者ドキュメントに記載のhttp://www.eclipse.org/downloadsというリンクからIDEはダウンロードできます。 www.eclipse.org

mergedoc.osdn.jp

f:id:logicalarts:20210528230533p:plain
(図1)

この記事では、日本語版のEclipse IDEにて検証を行いたいため、図2のhttps://mergedoc.osdn.jp/というリンクから、Pleiades All in One EclipseというEclipse IDEをダウンロードして、検証を行います。Eclipse IDEについては、最新バージョンのEclipse 2021を使用して頂いても問題はないと思いますが、外部JARファイルと同様に安定バージョンであるEclipse 2020を使用させて頂きます。[Eclipse 2020]を押下します。

f:id:logicalarts:20210528230553p:plain
(図2)

Javaの[Full Edition]のDownloadからIDEをダウンロードします。

f:id:logicalarts:20210528230607p:plain
(図3)

項目名 URL
Eclipse IDE http://www.eclipse.org/downloads
Pleiades All in One Eclipse https://mergedoc.osdn.jp/

Eclipseを使用したことがない方などコンポーネント名が不明な方はEclipseのユーザインターフェースのガイドラインがありますので、参考にしてみて下さい。

wiki.eclipse.org

f:id:logicalarts:20210819092108p:plain
図4

Javaライブラリ(HttpComponents・JSON In Java)の取得

まず取得するJavaライブラリですが、開発者ドキュメントのJava開発者環境の設定 - REST環境の確認(RESTベースのAPI)を確認すると、REST API連携用のサンプルJavaプログラムのソースコードが確認できます。

・REST 環境の確認 (REST ベースの API) developer.salesforce.com

developer.salesforce.com

ソースコード内のimport文の記載にorg.apache.http及びorg.jsonという記載が確認でき、 HttpClient及びJSON フレームワークがインポートで指定されていることが分かります。

このため、EclipseJavaプログラムからSalesforceに連携するためには、HttpClient及びJSON フレームワークを事前に取得しておき、 ライブラリで外部JARファイルとして、使用する設定を行う必要があることがわかります。

f:id:logicalarts:20210528231713p:plain
(図5)

この記事ではHttpComponents、JSONの取得方法について記載させて頂きます。

HttpComponents

まず、HttpClientの取得を行います。 HttpClientの取得先のリンクであるhttp://hc.apache.org/downloads.cgiを押下して、 Apache HttpComponentsのダウンロードページを開きます。

f:id:logicalarts:20210528230619p:plain
(図6)

項目名 URL
HttpClientの取得先 http://hc.apache.org/downloads.cgi

Apache HttpComponentsのダウンロードページを開きましたら、 HttpClient及びHttpCoreのセクションにて、最新バージョンのBinaryが提供されていることを確認します。

この記事では、最新バージョンのBinaryは使用せず、 HttpClient及びHttpCoreのBinaryファイルのバージョンを指定して取得する手順を記載させて頂いています。

f:id:logicalarts:20210528230633p:plain
(図7)

Apache HttpComponentsのダウンロードページを下にスクロールして、 Older releasesセクションにあるOld releases are available from the archivesarchivesのリンクから、ダウンロードファイルのarchivesページを開きます。

f:id:logicalarts:20210528230648p:plain
(図8)

ダウンロードファイルのarchivesページを開くと、ダウンロードを行う[httpclient]及び[httpcore]のリンクがあることを確認します。

HttpClientのダウンロードから行います。 archivesページにて、ダウンロードするライブラリのリンクを確認したら、[httpclient]を押下します。

f:id:logicalarts:20210528230708p:plain
(図9)

[HttpComponents Client]画面が表示されたら、[binary]を押下します。

f:id:logicalarts:20210528230722p:plain
(図10)

安定版のバージョンをダウンロードするためにLast modified2013-09-11 08:15となっている httpcomponents-client-4.2.6-bin.zipのHttpClientファイルをダウンロードします。

f:id:logicalarts:20210528230735p:plain
(図11)

ダウンロードが完了したら、HttpCoreファイルのダウンロードを行います。 再度、ダウンロードファイルのarchivesページを開き、次は、[httpcore]のリンクを押下します。

f:id:logicalarts:20210528230708p:plain
(図12)

[HttpComponents Core]画面が表示されたら、[binary]を押下します。

f:id:logicalarts:20210528230751p:plain
(図13)

安定版のバージョンをダウンロードするためにLast modified2013-08-01 18:36となっている httpcomponents-core-4.2.5-bin.zipのファイルをダウンロードします。

f:id:logicalarts:20210528230806p:plain
(図14)

項目名 該当バージョンのファイル名
Http Components httpcomponents-core-4.2.5-bin.zip

各ファイルのダウンロードが完了したら、使用するファイルであるcommons-codec-1.6.jarhttpclient-4.2.6.jarhttpcore-4.2.5.jarEclipseの外部JARファイルで読み込めるように、同じフォルダに格納しておきます。

f:id:logicalarts:20210528230824p:plain
(図15)

ファイル名 説明
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のダウンロードページを開きます。

mvnrepository.com

f:id:logicalarts:20210528230838p:plain
(図16)

Maven RepositoryにあるJSON In Javaのページでは、 Version[20210307]のダウンロードリンクを押下します。

f:id:logicalarts:20210528230852p:plain
(図17)

Filesセクションにあるbundleのリンクを押下します。

f:id:logicalarts:20210528230912p:plain
(図18)

ダウンロードしたファイルから、外部JARファイルにて使用するjson-20210307.jarのファイルを確認します。

f:id:logicalarts:20210528230928p:plain
(図19)

項目名 該当バージョンのファイル名
JSON In Java json-20210307.jar

JSON In Javaの取得方法については、以上です。

Javaライブラリ(Commons-logging)

Commons-loggingについても、最新バージョンのCommons-loggingの取得方法をご紹介したいと思います。

Apache Logging Componetを開いて、[Download]を押下します。

commons.apache.org

f:id:logicalarts:20210528230944p:plain
(図20)

Download Apache Commons Loggingのページが表示されましたら、Binariesセクションにある Apache Logging Componetの最新版バイナリファイルであるcommons-logging-1.2-src.zipをダウンロードします。

f:id:logicalarts:20210528231007p:plain
(図21)

項目名 該当バージョンのファイル名
Commons-logging commons-logging-1.2-src.zip

ダウンロードした圧縮ファイルを解凍して、外部JARファイルで使用するcommons-logging-1.2.jarを確認します。

f:id:logicalarts:20210528231027p:plain
(図22)

Commons-loggingの取得方法については、以上です。

ダウンロードしたEclipse IDEにて使用する外部JARファイル

インポート前に使用するバイナリファイルを確認します。

f:id:logicalarts:20210528231105p:plain
(図23)

まとめ

以上で、Salesforce Rest API連携用 Javaプログラム(Eclipse IDE) 設定の使用ライブラリ(外部JARファイル)の用意は、完了です。

用意されたJARファイルを使用して、Eclipse IDEにて、外部JARファイルとして読み込むことで、 Salesforceと連携するJavaプロジェクトを作成できます。

Javaプログラムで連携できるようになると、既存のエンタープライズアプリケーションで 数多く使用されているプログラミング言語から、SalesforceAPI連携が行えるようになります。

続きは、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にバージョンアップなど