ãŸããã
æè¿ãAndroidãã©ãããã©ãŒã ã«ã€ããŠç¥ãåããŸããã ç¹å®ã®æ®µéã§ã¯ããªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ããŸãã¯ããç°¡åã«ã¯ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®ããåãã§ç¶æ³ãã©ããªã£ãŠãããã確èªããå¿
èŠããããŸããã
æåã¯ããã©ãããã©ãŒã ãEJBãã¯ãããžãŒã®äœ¿çšãèš±å¯ããããšãæãŸããŠããŸããã ã€ã³ã¿ãŒãããã§ããã€ãæ€çŽ¢ããåŸãç§ã¯ãããããã»ã©åçŽã§ã¯ãªããšç¢ºä¿¡ããŸããã ã»ãšãã©ã®ãœãŒã¹ã¯ãWebãµãŒãã¹ã代æ¿ãšããŠäœ¿çšããããšãæšå¥šããŠããŸãã EJBã¯Androidã«ã¯éãããŸãã WebãµãŒãã¹ã®å Žåã
ksoap2-androidãã¬ãŒã ã¯ãŒã¯ãæšå¥šãããŸããã
ksoap2ã®æåã®ç ç©¶äžã«å¥ã®ã¬ãŒãã«ã€ãŸãããã®ã§ããµãŒããŒããç¬èªã®ã«ã¹ã¿ã ã¿ã€ãã®ãªããžã§ã¯ããéåä¿¡ããå¿
èŠãããæ®µéã«éããŸããã æ€çŽ¢ã䜿çšããŠã
ãã®èšäºãããã§èŠã€ããŸã
ã ã ãããããåã«ã¹ã¿ã ãªããžã§ã¯ãã«
KvmSerializableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠãããããšãåŠã³ãŸããã åãããšã¯ããªããžã§ã¯ããã·ãªã¢ã«åããã³éã·ãªã¢ã«åããããã®ã¡ãœãããå®è£
ããå¿
èŠãããããšãæç€ºããŠããŸãã çè«äžã¯100ãè¶
ããç¬èªã®ãªããžã§ã¯ãã䜿çšããããšã«ãªã£ãŠãããããåãªããžã§ã¯ãã«å¯ŸããŠKvmSerializableã®å®è£
ãèšè¿°ãããšããèãã¯ãã©ããããããç§ã®ç±æãåèµ·ããŸããã§ããã
äœããã¹ãããAndroidãã©ãããã©ãŒã äžã§é·å¹Žã«ããã£ãŠRPCãæŽçãã䟿å©ãªæ¹æ³ãååšããªãã£ãããšã¯æ¬åœã«ãããŸããïŒ æ€çŽ¢ã¯ç¶ããããŸããã å€ãã®ãœãŒã¹ãJSONã®äœ¿çšãæšå¥šããŠããŸãã ããããç§ãJSONã®ã·ãªã¢ã«åãæžãããã¯ãããŸããã§ããã ããããå°ãåŸã«ã
gsonã©ã€ãã©ãªãŒã«ã€ããŠèšåããŸããããããã¯ããã»ã©æªããªãããã§ãã
æåŸã®åžæã¯GWT-RPCãã¯ãããžãŒã§ããã GWTãšAndroidã¯1ã€ã®äŒæ¥ã®çºæ¡ã§ãããããAndroidã¯ã©ã€ã¢ã³ãããGWT-RPCã¡ãœãããåŒã³åºãç°¡åãªæ¹æ³ãããã¯ãã§ãã æ®å¿µãªããããã®æ¹æ³ã¯ç§ã«ã¯èŠã€ãããŸããã§ããã gwt-phonegapã©ã€ãã©ãªã¯ãããŸãããã©ããããããRPCã«é¢ããæ
å ±ãããã«èŠã€ããããšãã§ããŸããã§ããã
åœŒã®æ€çŽ¢çµæã«ã»ãŒå®å
šã«å€±æãã圌ã¯ãã§ã«ãã®ããžãã¹ãæŸæ£ãããã£ãã ãããã
è峿·±ãèšäºããããŸããã èè
ã¯ããã€ããªã·ãªã¢ã«åã®äœ¿çšãææ¡ããŸããã Javaãã©ãããã©ãŒã ã®æšæºã§ãããHTTPãããã³ã«ãšAndroidã«çµã¿èŸŒãŸããApache HTTPã¯ã©ã€ã¢ã³ãã䜿çšããŠãªããžã§ã¯ããéä¿¡ããŸãã 確ãã«ããã®ã¢ãããŒãã¯ãã¹ãŠã®ãªããžã§ã¯ãã«å¯ŸããŠæ©èœãããšã¯éããªããšèŠå®ãããŠããŸããã ããããå©ç¹ã®äžã§ãããã«ããéçºæéãæ¬åœã«ç¯çŽãããããšãææãããŸããã ç§ã¯èè
ã®èããå°ããã¹ãããå€ãã®ãªããžã§ã¯ãã«ãšã£ãŠããã®ã¿ã€ãã®ã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãšãã©ã³ã¹ããŒããé©åã§ãããšç¢ºä¿¡ããŸããã ãã¡ãããå€ãã®éçºè
ã¯Androidã®ãã€ããªã·ãªã¢ã«åæ¹æ³ãæªã ãšèšã£ãŠããŸãã ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã«ã¯ã©ã¹ãšããŒãžã§ã³ãä¿æããã®ã¯å°é£ã§ãã ååãšããŠãç§ã¯å€§è¡ã®ããã«äœãæžãã€ããã¯ãªãã£ãã®ã§ããã®ã¢ãããŒãã§ã¯èªåã«ãšã£ãŠæªãããšã¯äœãèŠãŸããã§ããã ã¡ãã£ãšè€éãªãªããžã§ã¯ãããšã«ãã®ããžãã¹ããã¹ãããå¿
èŠãããããšãã¡ã¢ããŸããã
ãã©ã³ã¹ããŒããšã·ãªã¢ã«åã§ã¯ãå€ããå°ãªããæ±ºããããã§ãã ããã§ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããã®äŸ¿å©ãªããŒã«ãå¿
èŠã§ããã ãããããGWTã«ã€ããŠãã€ãŸã察åŠããªããã°ãªããªãçŽ æŽããã
gwt-dispatchãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠãããäžåºŠèããªããã°ãªããŸããã§ããã ããã©ãŒã«ã¯ãã§ã«åœŒã«é¢ãã
è¯ãèšäºããããŸããã Gwt-dispatchã¯ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãããåºæ¬çã«GWT RemoteServiceServletäžã«æ§ç¯ãããŸãã äžèšã®æ
å ±ãåæããåŸããã®ãã¬ãŒã ã¯ãŒã¯ãéåžžã®ãµãŒãã¬ããã®ã©ãããŒãšããŠåäœæããããšã¯å¯èœã§ãããããã»ã©é£ãããªãããã«æããŸããã ãããŠããã§ã«AndroidåŽã§ãhttpã¯ã©ã€ã¢ã³ãã䜿çšããŠå¿
èŠãªã¡ãœãããåŒã³åºããŸãã
ç§ã¯ãããžã§ã¯ãã®ãœãŒã¹ã³ãŒããå匷ãå§ããŸããã ãµãŒããŒåŽãç°¡çŽ åããGWTãšã®ãã¹ãŠã®éä¿¡ãåæããå¿
èŠããããŸããã ãã¹ãŠã®
Actionãªããžã§ã¯ãã¯ãGWT
IsSerializableã®ä»£ããã«éåžžã®
Serializableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ãã
å¿
èŠããããŸãã ã æ°æ¥éã®ä»äºã®åŸãçµæã¯ã³ãã¥ããã£ãšå
±æãããçµæã§ããã ããã§ã
http-dispatchãšããã©ã€ãã©ãªã«å
¥ããŸããã ãã®ã³ã¢ã¯ãå®éã«ã¯ãããã«åèšèšãããgwt-dispatchãã¬ãŒã ã¯ãŒã¯ã§ãã ãããäœããããã©ã€ãã©ãªã¯ãã¹ãã®æºåãã§ããŠãããã§ããã°Androidãã©ãããã©ãŒã ã§äœ¿çšã§ããŸãã å°ãªããšããšãã¥ã¬ãŒã¿ãŒãšã¿ãã¬ããã§ã®æåã®ãã¹ãã¯æåããŸããã ã³ãã¥ããã£ã®å©ããåããŠãçµæãæãèµ·ããããããšãå¯èœã«ãªãããšãé¡ã£ãŠããŸãã
åºæã¯ããã§çµãããŸãã å€ãã®èªè
ãå®éã«ããã«æ¥ããšããããšã§ãã
å®çšéš
ã³ãã³ããã¿ãŒã³ã¯ãã¯ã©ã€ã¢ã³ããäºåå®çŸ©ãããã¿ã€ãã®ç¹å®ã®ã³ãã³ãããµãŒããŒã«éä¿¡ããããšãæå³ããŸãã ãµãŒããŒã¯ãããèªèããã³ãã³ããåŒæ°ãšããŠäœ¿çšããŠããã«é¢é£ä»ããããã¢ã¯ã·ã§ã³ãå®è¡ããŸãã ã¢ã¯ã·ã§ã³ãå®äºãããšãã¯ã©ã€ã¢ã³ãã¯ç¹å®ã®çµæãè¿ããŸãã
http-dispatchãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠç°¡åãªpingã³ãã³ããäœæããæ¹æ³ã瀺ããŸãã ãã®ã³ãã³ãã¯ãä»»æã®ãªããžã§ã¯ãããµãŒããŒã«éä¿¡ããåããªããžã§ã¯ããåä¿¡ããŸãã
å
±éã®ã¯ã©ã€ã¢ã³ããµãŒããŒéšå
ãŸããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã®æäœã«å¿
èŠãªãªããžã§ã¯ãã«ã€ããŠèª¬æããŸãã
ãŸããã³ãã³ãã®çµæã åçµæã«ã¯ã
net.customware.http.dispatch.shared.Resultã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ãã
å¿
èŠããããŸãã çµæã¯AbstractSimpleResultæœè±¡ã¯ã©ã¹ãæ¡åŒµããŸããããã¯ã1ã€ã®ãªããžã§ã¯ãããµãŒããŒããè¿ãããç¶æ³ã«é©ããŠããŸãã
PingActionResult.javaimport net.customware.http.dispatch.shared.AbstractSimpleResult; public class PingActionResult extends AbstractSimpleResult<Object> { private static final long serialVersionUID = 1L; public PingActionResult(Object object) { super(object); } }
次ã«ããµãŒããŒã«éä¿¡ãããã³ãã³ããçŽæ¥èšè¿°ããŸãã åŸè
ã¯ãåã®ã¹ãããã§èª¬æããçµæãè¿ããŸãã åããŒã ã¯ãæ±çšã€ã³ã¿ãŒãã§ãŒã¹
net.customware.http.dispatch.shared.Actionãå®è£
ããå¿
èŠããããŸãã å®è£
ãã©ã¡ãŒã¿ãŒã¯ãçµæã®ã¿ã€ããæå®ããå¿
èŠããããŸãã ããã¯ãåã®ã¹ãããã®
PingActionResultã«ãªããŸãã ç§ãã¡ã®ããŒã ã¯ããµãŒããŒäžã§ãã·ãªã¢ã©ã€ãºãããçµæãšããŠã¯ã©ã€ã¢ã³ãã«
éãè¿ããã
PingActionResultã«ã©ããããã
ãªããžã§ã¯ããå«ã¿ãŸãã ãã¬ãŒãã³ã°è³æã§ãµãŒããŒã®ç¶æ
ã®ããã€ãã®ã±ãŒã¹ã衚瀺ãããã®ã§ãnullçµæãè¿ããäŸå€ãã¹ããŒãããªãã·ã§ã³ãããŒã ã«è¿œå ããŸãã
PingAction.java public class PingAction implements Action<PingActionResult> { private static final long serialVersionUID = 1L; private Object object;
ãã®æ®µéã§ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã«ååšããéšåãç¹å®ããŸããã
ãµãŒããŒåŽ
ãŸããPingActionããŒã ã®ã³ã³ãããŒã«ã¯ã©ã¹ãäœæããŸãã ãã®ãããªåå¶åŸ¡ã¯ã©ã¹ã¯ã
net.customware.http.dispatch.server.ActionHandlerã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããå¿
èŠããããŸãã æ°ãããã³ãã©ãŒã®äœæã容æã«ããããã«ã
ActionHandlerã€ã³ã¿ãŒãã§ãŒã¹
ã¡ãœããã®ããã€ããæ¢ã«å®è£
ããŠããé«ã¬ãã«ã®æœè±¡ã¯ã©ã¹
SimpleActionHandlerããããŸãã
PingActionHandler.java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import net.customware.http.dispatch.server.ExecutionContext; import net.customware.http.dispatch.server.SimpleActionHandler; import net.customware.http.dispatch.shared.ActionException; import net.customware.http.dispatch.shared.DispatchException; import net.customware.http.dispatch.test.shared.PingAction; import net.customware.http.dispatch.test.shared.PingActionResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; import com.google.inject.Provider; public class PingActionHandler extends SimpleActionHandler<PingAction, PingActionResult> { protected final Logger log = LoggerFactory.getLogger(getClass()); @Override public PingActionResult execute(PingAction action, ExecutionContext context) throws DispatchException { try {
次ã«ãå¶åŸ¡ãµãŒãã¬ããã«ãã³ãã©ãŒãç»é²ããå¿
èŠããããŸãã å®å
šã§ãªããµãŒãã¬ããã®äŸã䜿çšããŠãGuiceã䜿çšããã«ãããè¡ãæ¹æ³ãåããŠç޹ä»ããŸãã
åå¶åŸ¡ãµãŒãã¬ããã¯ãã¯ã©ã¹
net.customware.http.dispatch.server.standard.AbstractStandardDispatchServletãŸãã¯
AbstractSecureDispatchServletãæ¡åŒµããå¿
èŠããããŸãã æšæºã®å¶åŸ¡ãµãŒãã¬ããã¯æ¬¡ã®ããã«ãªããŸã
StandardDispatcherTestService.java import net.customware.http.dispatch.server.BatchActionHandler; import net.customware.http.dispatch.server.DefaultActionHandlerRegistry; import net.customware.http.dispatch.server.Dispatch; import net.customware.http.dispatch.server.InstanceActionHandlerRegistry; import net.customware.http.dispatch.server.SimpleDispatch; import net.customware.http.dispatch.server.standard.AbstractStandardDispatchServlet; import net.customware.http.dispatch.test.server.handler.PingActionHandler; public class StandardDispatcherTestService extends AbstractStandardDispatchServlet { private static final long serialVersionUID = 1L; private Dispatch dispatch; public StandardDispatcherTestService() {
ããã§ã¯ã
PingActionHandlerã«å ããŠãæšæºã®
BatchActionHandlerãç»é²ããŸãã
BatchActionã³ãã³ã
ããã±ãŒãžãåŠçã
ãŸã ã
web.xmlã«ãµãŒãã¬ããã®èª¬æã远å ããŸã
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>DispatchServlet</servlet-name> <servlet-class>net.customware.http.dispatch.test.server.standard.StandardDispatcherTestService</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatchServlet</servlet-name> <url-pattern>/standard_dispatch</url-pattern> </servlet-mapping> </web-app>
ããã¯ãã¹ãŠãµãŒããŒéšåã«ãããŸãã
ã客æ§
ã¯ã©ã€ã¢ã³ãåŽã«ç§»ããŸãããã http-dispatchãã¬ãŒã ã¯ãŒã¯ããµãŒããŒãšã®ãã¹ãŠã®æäœãéåæã§ãããšæ³å®ããããšãçŽã¡ã«äºçŽããŸãã åæåŒã³åºãã®å¯èœæ§ã¯ãããŸããã䜿çšããããšã¯ãå§ãããŸããã
æšæºã®éåæã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããAndroidãã©ãããã©ãŒã çšã®ã·ã³ãã«ãªã¯ã©ã€ã¢ã³ããäœæããŸãã ãµãŒããŒãšå¯Ÿè©±ããã«ã¯ãç¶æ³ã«å¿ããŠã€ã³ã¿ãŒãã§ãŒã¹
net.customware.http.dispatch.client.standard.StandardDispatchServiceAsyncãŸãã¯
SecureDispatchServiceAsyncãå®è£
ããå¿
èŠããããŸãã Androidãã©ãããã©ãŒã ã§ã®å°ããªçµéšã«ãããããããç§ã¯ããã®ããã®ã€ã³ã¿ãŒãã§ãŒã¹ã®ç°¡åãªå®è£
ãæžãèªç±ãåããŸããã ä»åã¯
net.customware.http.dispatch.client.android.AndroidStandardDispatchServiceAsyncã䜿çšã
ãŸã ã ãã®å®è£
ã®ç¹åŸŽã¯ããã¹ãŠã®ã³ãã³ããåå¥ã®ã¹ã¬ããã§å®è¡ãããããšã§ãã ãµãŒããŒããçµæãè¿ããšãEDTã¹ããªãŒã ã§åŠçãè¡ãããŸãã æ¬¡ã®ããã«ãªããŸãã
public <R extends Result> void execute( final Action<R> action, final AsyncCallback<R> callback) {
ããããããã®ã¢ãããŒãã¯æ£ãããªããç§ã®çµéšãä¹ããããããããçè§£ããŠããŸããã ãããã£ãŠãAndroidã¯ã©ã€ã¢ã³ãããRPCãåŒã³åºãããã®ããé©åãªãœãªã¥ãŒã·ã§ã³ã瀺ããŠãããçµéšè±å¯ãªAndroidéçºè
ã«æè¬ããŸãã
ã¯ã©ã€ã¢ã³ãã³ãŒãã§ã
DispatchAsyncã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããŸãã ããã¯æ¬¡ã®ããã«å®è¡ã§ããŸãã
DispatchAsync dispatch = new StandardDispatchAsync( new DefaultExceptionHandler(), new AndroidStandardDispatchServiceAsync(DISPATCH_URL_STANDARD));
ãµãŒããŒã«ã¢ã¯ã»ã¹ããå Žåãçµæçšã«
AsyncCallbackã¿ã€ãã®ãªããžã§ã¯ããäœæããå¿
èŠããããŸãã
AsyncCallback<PingRequestResult> callback = new AsyncCallback<PingRequestResult>()
ã¡ãœãããå®è£
ãã
public void onSuccess(PingRequestResult result)
ãããŠ
public void onFailure(Throwable caught)
ã³ãã³ããæ£åžžã«å®è¡ãããäŸå€çãªç¶æ³ãçºçãããšãããã«å¿ããŠåŒã³åºãããŸãã
次ã«ãå®è¡ããã³ãã³ããæå®ããŸãã
dispatcher.execute(pingRequest, callback);
RPCUtilsã¯ã©ã¹ã«ã€ããŠèª¬æããŸã
ãRPCUtilsã¯ã©ã¹ã¯ããµãŒããŒã«å¯ŸããŠç°ãªããã©ã¡ãŒã¿ãŒã䜿çšããŠããã€ãã®ãã¹ãåŒã³åºããè¡ããŸãã
DISPATCH_URLãããŒã«ã«ãµãŒããŒã®ã¢ãã¬ã¹ã«çœ®ãæããå¿
èŠãããããšã«
泚æããŠãã ããã æ¢åã®ãã®ã䜿çšã§ããŸãããããã¯JBoss Openshiftãã©ãããã©ãŒã ã«ãããã€ããããã¹ãã¢ããªã±ãŒã·ã§ã³ã§ãã
RPCUtils.java import java.util.ArrayList; import java.util.List; import net.customware.http.dispatch.client.AsyncCallback; import net.customware.http.dispatch.client.DefaultExceptionHandler; import net.customware.http.dispatch.client.DispatchAsync; import net.customware.http.dispatch.client.android.AndroidSecureDispatchServiceAsync; import net.customware.http.dispatch.client.android.AndroidStandardDispatchServiceAsync; import net.customware.http.dispatch.client.guice.SecureDispatchModule; import net.customware.http.dispatch.client.secure.CookieSecureSessionAccessor; import net.customware.http.dispatch.client.standard.StandardDispatchAsync; import net.customware.http.dispatch.test.shared.PingRequest; import net.customware.http.dispatch.test.shared.PingRequestResult; public class RPCUtils { protected static final String DISPATCH_URL_STANDARD = "http://httpdispatch-ep.rhcloud.com/standard_dispatch"; static DispatchAsync dispatch = new StandardDispatchAsync( new DefaultExceptionHandler(), new AndroidStandardDispatchServiceAsync(DISPATCH_URL_STANDARD)); public static DispatchAsync getDispatchAsync() { return dispatch; }
LogWrapper.java public interface LogWrapper { void log(String text); }
ã¢ã¯ãã£ããã£ã®ã¬ã€ã¢ãŠããäœæããŸã
activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Spinner android:id="@+id/actionTypeSP" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" /> <Button android:id="@+id/runBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/actionTypeSP" android:text="Run" /> <ScrollView android:id="@+id/scroller" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/runBtn" android:background="#FFFFFF" > <TextView android:id="@+id/logView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="3dp" android:scrollHorizontally="false" android:scrollbars="vertical" android:textSize="15sp" /> </ScrollView> </RelativeLayout>
ããŠãã¢ã¯ãã£ããã£èªäœã®ã³ãŒã
MainActivity.java import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; public class MainActivity extends Activity { enum ActionType { BASIC_STRING_OBJECT("Basic Object Send/Receive"), BASIC_ARRAYLIST_OBJECT("Basic ArrayList Send/Receive"), NULL_SUB_OBJECT("Null argument Send/Receive"), NULL_OBJECT("Null Receive"), EXCEPTION("Remote Exception") ; String description; ActionType(String description) { this.description = description; } @Override public String toString() { return description; } } Spinner actionTypeSP; TextView logView; ScrollView scroller; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } void init() { initActionList(); logView = (TextView) findViewById(R.id.logView); scroller = (ScrollView) findViewById(R.id.scroller); initRunButton(); } void initActionList() { actionTypeSP = (Spinner) findViewById(R.id.actionTypeSP); ArrayAdapter<ActionType> dataAdapter = new ArrayAdapter<ActionType>( this, android.R.layout.simple_spinner_item, ActionType.values()); dataAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); actionTypeSP.setAdapter(dataAdapter); } void initRunButton() { Button runBtn = (Button) findViewById(R.id.runBtn); final LogWrapper log = new LogWrapper() { @Override public void log(String text) { MainActivity.this.log(text); } }; runBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ActionType actionType = (ActionType) actionTypeSP .getSelectedItem(); if (actionType != null) { switch (actionType) { case BASIC_STRING_OBJECT: RPCUtils.runBasicStringTest(log); break; case BASIC_ARRAYLIST_OBJECT: RPCUtils.runBasicListTest(log); break; case EXCEPTION: RPCUtils.runExceptionTest(log); break; case NULL_OBJECT: RPCUtils.runNullObjectTest(log); break; case NULL_SUB_OBJECT: RPCUtils.runNullSubObjectTest(log); break; default: break; } } } }); } void log(String str) { String text = logView.getText().toString(); text += str + "\n"; logView.setText(text); scroller.smoothScrollTo(0, logView.getBottom()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
ãŸããã¢ããªã±ãŒã·ã§ã³ã«ã€ã³ã¿ãŒãããã䜿çšããèš±å¯ã远å ããããšãå¿ããªãã§ãã ãã
AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.customware.http.dispatch.test.client.android" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
çµæã¯æ¬¡ã®ããã«ãªããŸãã

äžã®ãã£ãŒã«ãã§ã¢ã¯ã·ã§ã³ã®ã¿ã€ããéžæããŠããããå®è¡ããã¿ã³ãã¯ãªãã¯ããå¿
èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãµãŒããŒã«ã³ãã³ããéä¿¡ããçµæããã°ã«è¡šç€ºãããŸãã å©çšå¯èœãªã¢ã¯ã·ã§ã³ïŒãã¹ãæååã®éä¿¡ã
ArrayList <String>åã®ãªããžã§ã¯ãã®éä¿¡ã
nullã®éä¿¡ã
nullã®çµæã®ååŸããµãŒããŒã§ã®äŸå€ã®ã¹ããŒã
ä»ã®ãšãããã¹ãŠã§ãã ãã£ãŒãããã¯ãã³ã¡ã³ããèšæ£ã«æè¬ããŸãã ãæž
èŽããããšãããããŸããã
åç
§è³æ
ãããžã§ã¯ãããŒãžïŒ
code.google.com/p/http-dispatchAndroidãã¹ãã¢ããªã±ãŒã·ã§ã³ïŒ
http-dispatch.googlecode.com/files/HTTP_Dispatch_Test_Android.apkæºåãã§ããWARïŒ
http-dispatch.googlecode.com/files/HTTP_Dispatch_Test_Server.warEclipseçšã®Androidã¢ããªãããžã§ã¯ãïŒ
http-dispatch.googlecode.com/files/HTTP_Dispatch_Test_Android.zipGwt -dispatchãã¬ãŒã ã¯ãŒã¯ïŒ
code.google.com/p/gwt-dispatchPS
http-dispatchã®åºç€ãšãªãgwt-dispatchãã¬ãŒã ã¯ãŒã¯ã¯ãéåžžã«å€æ§ã§ãã ãµãŒããŒåŽãšã¯ã©ã€ã¢ã³ãåŽãèšè¿°ããæ¹æ³ã¯ããã€ããããŸãã æ¬¡åã¯ãGuiceãšå®å
šãªå¶åŸ¡ãµãŒãã¬ããã䜿çšããããè峿·±ãäŸã玹ä»ããŸãã ããŸããŸãªäŸãšæ¢è£œã®ãã¹ãã¢ããªã±ãŒã·ã§ã³ããããžã§ã¯ãããŒãžããããŠã³ããŒãã§ããŸãã