Google Analytics(GA) API v3 をjavaで実装する3(Servlet実装)
前回までの準備
Google Analytics(GA) API v3 をjavaで実装する1(準備) - isuta3's diary
Google Analytics(GA) API v3 をjavaで実装する2(Server側実装) - isuta3's diary
今回行うのは、以下を想定。
- 諸々の準備(済)
- 複数のプロファイルをまとめてGA API実行(済)
- 出力に利用する指標(Metric, Dimension)は複数パタンの固定とする(済)
- Servletを作成し実行してブラウザに表示させる。 (★)
- jsp、angularJSを利用したクライアントからservlet経由でAPI実行のデータの取得
tomcatでServletを実行するための環境を作る
tomcatプロジェクトを作成し、server.xmlにcontectPathを記述。
プロジェクトのコンテキストルートを設定し、Servletを作成したらweb.xmlに記述。
localhostで実行してブラウザに表示する。
1. server.xmlの記述
eclipseでtomcatプロジェクトを作成すれば自動的にserver.xmlにContextPathが追記できるが、
追記された内容は例えば下記。今回はプロジェクト名を「AnalyticsSrv」コンテキストルートは「/」のままにした。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/AnalyticsSrv" reloadable="true" docBase="/workspace/AnalyticsSrv" workDir="/workspace/AnalyticsSrv/work" /> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
2. servletを作成
URLをたたいてGA APIを実行してjsonの結果Stringを表示するだけのServletを作成する。
GaExecMainのgetResultDataは前回までに作ったもので、アナリティクスの複数のプラファイルをまとめて実行しjson形式のテキストを返すメソッド。
public class GaSearchServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("application/json; charset=UTF-8"); PrintWriter out = resp.getWriter(); GaExecMain main = new GaExecMain(); String json = main.getResultData("2013-12-01", "2013-12-31", 25, 1); out.println(json); out.close(); }
3. web.xmlを設定
web.xmlには、上記のservletを登録する。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>ga api</display-name> <servlet> <display-name>gaapi</display-name> <servlet-name>gaapi</servlet-name> <servlet-class>analytics.servlet.GaSearchServlet</servlet-class> <load-on-startup>50</load-on-startup> </servlet> <servlet-mapping> <servlet-name>gaapi</servlet-name> <url-pattern>/gaapi</url-pattern> </servlet-mapping> </web-app>
これでtomcatを起動して確認、と思ったらlibを読み込んでなかったのでNoClassDefFoundErrorが出た。tomcatプロジェクトのWEB-INF/libに準備編で取得してライブラリをつっこむ。
4. 起動確認
tomcatはport8080で設定していたので、下記URLで確認した。
http://localhost:8080/AnalyticsSrv/gaapi
こんな感じでブラウザ上に出力された。
{ "normal": [ { "shopNm": "shop name", "pageTitle": "title", "pageviews": "45", "visits": "6", "percentNewVisits": "33.33333333333333", "bounces": "3", "timeOnSite": "1329.0", "exitRate": "22.22222222222222", "visitBounceRate": "50.0" }, { "shopNm": "shop name2", "pageTitle": "title2", "pageviews": "12", "visits": "1", "percentNewVisits": "100.0", "bounces": "1", "timeOnSite": "0.0", "exitRate": "41.66666666666667", "visitBounceRate": "100.0" } ] }