找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4690|回复: 11

[webOS开发] WebOS 后台java service实例

[复制链接]
发表于 2010-9-19 12:05 | 显示全部楼层 |阅读模式
前段时间研究了下webos 开发, 随便请教了几位前辈 , 大致了解了webos的前后台调用机制(即:javascript 调用 java service) .有几位朋友询问过相关问题,我就不一一回复了, 就在这里献丑了...
0 A/ N" ^) _  U8 Z. a, P* g一:java service 开发:
0 Z0 ]+ Y. o7 c$ E6 }9 k) R9 w% \: p0 i- s. S
jar :
+ b% i6 ~/ x6 `" @0 V serviceframework.jar , json.jar  (在palm 模拟器里面有 抱歉 少了个 lunaservice.jar 这个是处理异常的)
  1. 5 F8 G3 ^3 U4 l% o( T
  2. code :  MyService.java4 U  q9 R7 G* Y
  3. " }# Z" x/ X8 a1 _% P9 }' p0 F  ~
  4. package  palm.greenwoods.demo/ W9 x& z5 [& W
  5. import com.palm.luna.LSException;
    ! U6 x+ b- n7 T* e2 O& T
  6. import com.palm.luna.service.LunaServiceThread;
    2 {# g. B  v/ \( ~8 x4 c
  7. import com.palm.luna.service.ServiceMessage;) j2 x# L/ J& a
  8. import org.json.JSONException;' l; b% v) v6 O8 E9 v. A
  9. import org.json.JSONObject;
    ) F* x+ B& V3 ~  ?. A# Y
  10. & p! K( j( n: k- `, k1 ^
  11. public class MyService extends LunaServiceThread {  n5 v1 V7 H1 E
  12.      public MyService () throws IOException {
    / C* g; }# @& `/ j# \' Q8 r7 k1 }
  13.      //code% @- {4 A  {$ t# C8 D& Z- g
  14.      }+ f: l% w$ L8 x
  15. % P4 l4 b- `9 S, }% x, N
  16.    @LunaServiceThread.PublicMethod //新的service 接口: o- E3 S3 X' z
  17.     public void status(ServiceMessage msg) throws JSONException, LSException,
    # A! r4 t+ n, |0 C" \( |
  18.             InterruptedException, IOException {
    1 p( h1 J# v- }# U9 L+ E
  19.         JSONObject reply = new JSONObject();: ]6 d* K6 X2 S  H: ]
  20.         reply.put("action","status");1 L: }: I6 m1 b
  21.         reply.put("status", status);
    . W9 o( ^; K0 S" P6 [
  22.        msg.respond(reply.toString()) ;//ServiceMessage   msg  这个是前端的 请求对象 respond 方法可以返回数据到前端 js
    # k" [# J* @. D, i
  23.     }
    / I6 I6 b. Q2 h9 q
  24. }
复制代码
Export => MyService.jar ) s# m2 t% E1 R8 x9 ?2 ]
0 [0 L4 _* \( E% D& H/ J& [
5 ~  p: s+ U6 q2 B: T. h
二:java service 打包:
4 E- }% M+ A7 p0 X5 j
  D: G- @0 F6 K# ^, D, J目录结构
  1. pack \
    , Y7 V- Y( I" I$ s! K
  2.         CONTROL\
    , u' a4 ^  ^6 N7 a
  3.                 #配置问题 palm.greenwoods.demo 为服务唯一ID/ u7 {# K" i, o! l# v$ q. M
  4.                 control
    : Y; S2 Q; s" a8 h' w
  5.                         Package: palm.greenwoods.demo" ^" O6 c2 L3 C9 Y  f, d1 V* F
  6.                         Priority: optional
    , c! w% e3 p: L( t7 ?4 w
  7.                         Section: Network
    " w5 n7 p7 \& P+ p
  8.                         Version: 1.0
    + E2 W6 [' b1 G  Q
  9.                         Architecture: all
    0 H) X+ ]- o# x/ A8 e, C
  10.                         Maintainer: GreenWoods [email]yulim.wang@gmail.com[/email]
    2 I0 v+ j- _, x8 C7 \* s
  11.                         Depends: - V! \$ e& w1 H5 a# v; z5 i$ k; T
  12.                         Description: MyServer Service
    - U" Q0 }( v5 |. n( D
  13.                         Source: {"Source":"http://user.qzone.qq.com/86121652/","Homepage":"http://user.qzone.qq.com/86121652/","Category":"Services","License":"GNU GPLv2","Type":"Service","FullDescription":"MyService.","PostRemoveFlags":"RestartJava","PostUpdateFlags":"RestartJava","Title":"GeXinService","PostInstallFlags":"RestartJava"}
    ! u, a2 r( ^3 N
  14.                 #服务安装执行脚本
    - c& P% Z# {$ m4 M' J" [' X
  15.                 postinst
    2 j8 }5 X! z0 O0 U) E
  16.                         #!/bin/sh9 H* S" @( ~9 B0 k$ Y- ^9 h
  17.                         start on started java-serviceboot
    8 v2 f; N/ _0 |/ G" T( C7 w
  18. ) s& f9 \3 I( I: T1 }/ M) }3 m
  19.                         mount -o remount,ro /
    6 |0 N( R5 o5 s# V

  20. & n" |3 K" W+ a1 G) U( [
  21.                         APP_PATH=/media/cryptofs/apps/palm.greenwoods.demo
    1 [8 ~% _' C# P% E" e

  22. $ R+ u4 Z0 H/ G+ w3 g+ r/ m* F6 i
  23.                         /bin/cp -f $APP_PATH/usr/lib/luna/java/MyService.jar /usr/lib/luna/java/MyService.jar1 g2 U" ~8 c, Q/ B0 |
  24. # C% L4 ?4 A( [: ]
  25.                         /bin/cp -f $APP_PATH/usr/share/dbus-1/system-services/palm.greenwoods.demo.service /usr/share/dbus-1/system-services/palm.greenwoods.demo.service9 J; {; a( L! Q% {& W+ F3 W/ W
  26. ! ~9 F0 [0 |! h0 X3 n% g) I
  27.                         /bin/cp -f $APP_PATH/etc/event.d/palm.greenwoods.demo /etc/event.d/palm.greenwoods.demo
    / O' X! f4 i; H4 D' E8 d% b

  28.   r( ~$ }* P$ ?- [! X
  29.                         if [ -z "$IPKG_OFFLINE_ROOT" ]; then
    % I; e# F& j! s! u
  30.                           killall -9 java& q" I, H" X, j/ @8 z( e4 i, }  C+ t% M$ F
  31.                           mount -o remount,ro /
    8 J- ^5 x" g2 l: C, ?0 `$ ]& {- J5 ]
  32.                         fi
    ! h8 c- E5 I% `! D: ?
  33. 9 w: q) ]3 h# g1 U2 Z' D1 B
  34.                         stop java-serviceboot! Z) p5 ~; N0 q* q- }! F
  35.                         start java-serviceboot9 {! Q1 H: l/ L- q: X2 G- p
  36.                         start palm.greenwoods.demo
    " u( o* x2 c; d3 ]+ O
  37. 2 f) |+ l" `6 P0 L  {1 N
  38.                         exit 0
    5 b. Z1 ?$ z$ Q$ n. e: ]
  39.                 preinst
    / t! T9 l  W. I9 l4 h
  40.                         mount -o remount,rw /
    1 B3 l6 Q1 S2 a4 ]& u: L2 |2 m, `
  41.                 #卸载服务脚本( W) g' t: \( n$ e
  42.                 prerm! B! v! g3 ~' ?% G3 a' M
  43.                         #!/bin/sh
    - X! W9 G6 s- |9 ]2 t, s
  44.                         mount -o remount,rw /* Y) T. E5 Q2 U0 `' t
  45. & y! B# T  |1 o6 s7 h
  46.                         stop java-serviceboot4 R0 e) l& c* N; j$ p. w( M
  47.                         stop palm.greenwoods.demo
    ' `( T- m1 A! p! B' X" Y

  48. 8 R6 ^. |4 m* I% k) U& |% B8 p
  49.                         /bin/rm -f /usr/lib/luna/java/MyService.jar
    : u9 M$ ?( f+ x. j. |" N

  50. * K  m; C# |5 J) i" L; n: G
  51.                         /bin/rm -f /usr/share/dbus-1/system-services/palm.greenwoods.demo.service, w' |5 L; \  m( v& a
  52. ' e- e6 z: U' {
  53.                         /bin/rm -f /etc/event.d/palm.greenwoods.demo) `# c* C* H8 r' U9 @

  54. # y  t. c# V' E+ `* y8 L5 b  A  y
  55.                         start java-serviceboot
    + ^& H6 u5 F8 L& u1 G1 L$ F, ~& q
  56.         etc\event.d\
    7 D( b; d  N3 O( f0 X
  57.                 #启动服务器 文件名必须和 服务唯一ID 一致' ~' s) ~% k, i- s  U8 `4 h
  58.                 palm.greenwoods.demo
    1 @# s5 F9 f$ C# ?* O
  59.                         description "MyServer Service", W1 R& w, g8 C( P

  60. 4 d6 p1 g) @* m# c9 q3 y8 r* X) F
  61.                         start on started java-serviceboot- s2 Q8 k: O7 e

  62. " M/ n5 j( m3 [& e( r" K/ }
  63.                         script
    ; T1 v0 E' s# h5 d+ Z/ ~
  64.                                 sleep 100 l, i" e0 f) Y0 [8 R6 |( g
  65.                                 returnTrue=0
    ; o5 g2 J: m8 Y( q  g0 c
  66.                                 tries=06 P+ C! M1 U/ n1 D# O+ F
  67.                                 while [ $returnTrue -eq 0 -a $tries -le 20 ]
    ; i( X; n5 O  E7 w
  68.                                 do: U) p" {+ ~; B& g8 ~* w
  69.                                         returnVal=$(luna-send -n 1 luna://palm.greenwoods.demo/status '{}' 2>&1)
    1 e1 g6 @! \5 T
  70.                                         tries=`expr $tries + 1`1 N1 U( O7 ?) s5 S+ D3 C, ~9 h
  71.                                         if [ "$returnVal" = "** Message: serviceResponse Handling: 2, {"returnValue":true}" ]9 g. ^# M+ l% X: Y1 g
  72.                                         then, n& ^0 E; c7 C5 [: w' Q9 u
  73.                                                 returnTrue=1/ q$ j) I* i) F' p) N' B
  74.                                         else7 J" ^8 u0 B9 E* ~; X' T2 h
  75.                                                 sleep 102 l) R3 r/ w4 Z$ n/ }& y
  76.                                         fi
    : t3 L: L  w2 ]. I1 C2 B8 z# P
  77.                                 done
    - H/ c9 K7 x4 `0 J! O* k
  78.                         end script3 N" {) y4 M; i" r
  79.         usr\
    ; ~7 T& o4 ^& ~/ J, ^) |
  80.                 lib\luna\java\& K' m8 Z, y7 x/ v2 J# N2 K
  81.                         MyService.jar$ B" N$ i3 r! v# `/ B
  82.                 share\dbus-1\system-services\
    & C. o3 ~7 q+ `3 z8 P7 {
  83.                         palm.greenwoods.demo.service6 c6 f2 G0 N; \  u9 y
  84.                                 [D-BUS Service]9 }/ Y1 S3 O4 {$ x% Q6 R" G
  85.                                 Name=palm.greenwoods.demo- v& H5 R' T8 x9 ?
  86.                                 Exec=/usr/bin/luna-helper 'luna://com.palm.vm/launch' '{"serviceName":"palm.greenwoods.demo","className":"palm.greenwoods.demo.MyService"}'
复制代码
所需打包工具 Ipk Packager.jar 选择 pack 所在目录 入图所示# _% R( K9 R0 a* f& ?9 R& Z
(不好意思 无法传图片 请看附件 )) A3 @* \- q4 C8 U9 ^! K; N
三 : 前台调用
  1.         new Mojo.Service.Request("palm://palm.greenwoods.demo/", {
    $ T! Y+ d3 Y) Y/ l
  2.                         method: "status",) e4 M/ p- b3 N
  3.                         onSuccess: this.listenStatus.bind(this),
    $ Q7 _5 E& e" h" J, w8 ]& F
  4.                         onFailure: this.serverFail.bind(this)8 R7 G' z- u8 p$ N: D
  5.                 });
复制代码
注:以上为个人见解 , 可能有不完善之处 ,还望高手指正 ! 献于 Plamer 谢谢.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

×

评分

参与人数 1威望 +10 收起 理由
2b6c3d729918489 + 10 谢谢分享

查看全部评分

回复

使用道具 举报

发表于 2010-9-19 16:15 | 显示全部楼层
哈哈,我这两天也在研究后台服务创建,学习了!!
回复 支持 反对

使用道具 举报

发表于 2010-9-19 16:39 | 显示全部楼层
com.palm.luna.LSException 这个异常类好像不在那两个包中,请教下,这在哪?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-19 16:51 | 显示全部楼层
忘记了一个  lunaservice.jar  补上了;
回复 支持 反对

使用道具 举报

发表于 2010-10-2 10:02 | 显示全部楼层
请问这个干啥用的??  呵呵, 可以在webos下运行JAVA程序?
回复 支持 反对

使用道具 举报

发表于 2010-10-2 13:27 | 显示全部楼层
学习了!!!
回复 支持 反对

使用道具 举报

发表于 2010-10-13 14:34 | 显示全部楼层

回复 楼主1# greenwoods 的帖子

不是很明白额,能不能说详细点啊
回复 支持 反对

使用道具 举报

发表于 2010-11-4 00:11 | 显示全部楼层
mark,以后来仔细看看
回复 支持 反对

使用道具 举报

发表于 2010-11-10 09:58 | 显示全部楼层
找到出错的原因了:
8 e: a* R/ U. x* E6 y; Mpostinst中 5 M# ^5 l2 [; g! k, C
mount -o remount,ro /5 f! ^5 K) a" o& _+ P1 m* b
应该改为  e) l2 w0 f6 A7 R
mount -o remount,rw /
回复 支持 反对

使用道具 举报

发表于 2011-9-8 10:22 | 显示全部楼层
不错啊!很好!顶
回复 支持 反对

使用道具 举报

发表于 2011-10-16 10:04 | 显示全部楼层
太复杂了
回复 支持 反对

使用道具 举报

发表于 2011-11-27 21:31 | 显示全部楼层
太感谢了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2025-2-23 10:24 , Processed in 0.331019 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表