質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

java-apnsを使用した際の.p12証明書ファイルの置き場所がわからない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,329

score 48

前提・実現したいこと

java-apnsを使用した際の.p12証明書ファイルの置き場所がわからないです。

現在push通知を実装を考えており、試行段階でまずはjava-apnsを使用して一人ずつ送ってみようということになりました。
で、今現在自分のPCのeclipsから参照しているtomcatと別に立てているTomcatサーバ両方で実験したいのですが、どちらの場合もどこにおいたらいいのかわかりません。

外部サーバーの場合はwarファイルにエクスポートして動かしています。

ご教授の程よろしくお願いします。

下記にコードも載せておくので間違っている点があればご指摘お願いしたいです。

該当のソースコード

public class PushSend {


    public void PushSendMesod(){


        //デバイストークンの設定
        String dtoken = "******************************************";

        //(APNsと通信するために必要な)証明書の場所の参照
        URL url = this.getClass().getResource("ここがわからない");
        String certFilePath = url.getFile();

        //証明書のPASSの取得
        String certPass = "**************";

        //ビルダーの生成
        //withNoErrorDetection()を指定しないと内部でThreadを生成しようとしてこける
        ApnsServiceBuilder serviceBuilder =
                APNS.newService().withCert(certFilePath, certPass).withNoErrorDetection();

        //接続先としてSandBOX(開発用環境)を指定
        serviceBuilder.withSandboxDestination();
        //こっちが本番用
        serviceBuilder.withProductionDestination();

        //Connctionの生成初期化
        ApnsService as = null;

        try {
            //Connectionにビルダーを使い実態を生成
            as = serviceBuilder.build();
            PayloadBuilder plb = APNS.newPayload();

            //アラート文字の生成(本文?)
            plb.alertBody("わからないことだらけ");

            //音やバッジの設定
            //plb.sound("音ファイル");
            //plb.badge(4);

            //プッシュの送信
            //デバイストークンと実態を生成
            as.push(dtoken,plb.build());

        } catch (Exception e) {

            int a = 0;

        } finally{
            //Connectionの破棄
            if(as != null) as.stop();
        }
    }

}

試したこと

とりあえず色々なところにおいて試してみましたがだめでした。

補足情報(言語/FW/ツール等のバージョンなど)

java,tomcat8(別サーバ),tomcat7(自PC)、

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

getResource の結果の url がへんですか? その場合はp12の置き場所がおかしいです。
urlは問題なくて、getFile の結果の filePath がへんですか? そうだとしたら、ちょっとややこしいです。

手元に再現環境がないので未確認ですけど、
PushSend.class と同じところに cert.p12 を置いて、
GetResourceAsStream("cert.p12") で得た Stream を withCert の第1引数に渡せばよいかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 14:34

    ご指摘されたことを実行してみたらできました!ありがとうございました!

    キャンセル

  • 2016/06/23 14:35 編集

    返信が遅れてしまい申し訳ありません。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る