找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4743|回复: 11

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

[复制链接]
发表于 2010-9-19 12:05 | 显示全部楼层 |阅读模式
前段时间研究了下webos 开发, 随便请教了几位前辈 , 大致了解了webos的前后台调用机制(即:javascript 调用 java service) .有几位朋友询问过相关问题,我就不一一回复了, 就在这里献丑了..." J3 l7 h9 l: z! P
一:java service 开发:, v+ u+ W/ j" f$ z0 T

) u; b+ ?8 p, L6 qjar :
4 z4 p5 W& H+ g, I  M' `3 G serviceframework.jar , json.jar  (在palm 模拟器里面有 抱歉 少了个 lunaservice.jar 这个是处理异常的)

  1. / b6 |+ r+ L; q! x$ q
  2. code :  MyService.java
    4 z( ^8 N8 H; [+ E7 _" ?

  3. / `0 q, |0 p' J0 i2 A) U
  4. package  palm.greenwoods.demo
    , O$ l: r" H3 h0 R
  5. import com.palm.luna.LSException;* e6 K" M# j7 [: @& i' f3 G6 w
  6. import com.palm.luna.service.LunaServiceThread;
    6 k! c4 O; A. y  X4 S7 |
  7. import com.palm.luna.service.ServiceMessage;7 V) M6 z1 @: S9 p! q& b7 ^2 T
  8. import org.json.JSONException;
    3 [$ u5 U2 v9 v5 V
  9. import org.json.JSONObject;6 h4 X' u' P, a+ r# F7 K; q
  10. " ]6 `8 t0 o+ o" p  W
  11. public class MyService extends LunaServiceThread {0 X+ Z# D+ R2 q: U4 D2 t
  12.      public MyService () throws IOException {
    1 w: K  y+ ^3 k! ?8 c, q) \+ Q* W
  13.      //code
    ' ~  _6 [3 Z6 D, t$ _) S1 ^' F% O
  14.      }
    : c- F3 Y; w& `: ?; g9 o6 `4 L: J2 m
  15. 0 R: e. o9 ~; C0 U' ^. m
  16.    @LunaServiceThread.PublicMethod //新的service 接口1 g4 \/ w  p4 g
  17.     public void status(ServiceMessage msg) throws JSONException, LSException,+ |% O6 Z& k! r: l
  18.             InterruptedException, IOException {, |4 [5 [: \8 m- |5 g8 W$ F
  19.         JSONObject reply = new JSONObject();2 F! g0 m% ^7 [3 V% }( c" b5 M* `
  20.         reply.put("action","status");9 G# q& n/ T* U( Y; O
  21.         reply.put("status", status);
    0 K# M# R2 u! b4 N
  22.        msg.respond(reply.toString()) ;//ServiceMessage   msg  这个是前端的 请求对象 respond 方法可以返回数据到前端 js6 `* |, ^% @8 m! }& m' Y4 p9 o3 z
  23.     }
    4 r& O, Y1 V5 l+ Q, r/ p  E
  24. }
复制代码
Export => MyService.jar
0 h, E4 l/ J/ Q$ G; o' [# r) d+ ^. x+ g5 e% Q
+ Y7 O7 j8 h; d+ s5 m2 `  F
二:java service 打包:
2 c: H' [5 `+ x# @: I6 j  J
+ C! @1 c% F1 S$ q$ h+ ?3 V) Q' {+ l目录结构
  1. pack \" P4 _7 U0 p" G7 U  q8 j
  2.         CONTROL\
    2 n1 n2 |  M, @' X
  3.                 #配置问题 palm.greenwoods.demo 为服务唯一ID
    6 j2 M; b7 C8 O+ v6 w
  4.                 control
    . x. M/ H& j( }4 ?! q. }
  5.                         Package: palm.greenwoods.demo
    7 {4 `3 p. ~3 [* B5 D
  6.                         Priority: optional
    ) J6 ~3 `/ q. ^. l, F" {
  7.                         Section: Network9 x' `) x4 Z/ U, R+ @8 E
  8.                         Version: 1.0% y1 E2 j7 r' T7 P9 F2 v. z2 E
  9.                         Architecture: all# _) O/ p6 d( c) n! g  |( E/ z" X
  10.                         Maintainer: GreenWoods [email]yulim.wang@gmail.com[/email]1 @1 m1 X3 O! }  G# K" I# t( ?
  11.                         Depends:
    ; m. M7 d+ \5 j  m
  12.                         Description: MyServer Service
    7 a2 w2 z, ^3 T& V1 F7 K$ u8 W
  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"}; F3 O$ N1 r7 A8 P5 Q
  14.                 #服务安装执行脚本5 Y; j; R' `8 k
  15.                 postinst; x, t9 j1 ~4 n- X/ y
  16.                         #!/bin/sh) i" y: i8 n3 e) }# Y0 \$ \
  17.                         start on started java-serviceboot
    % {/ M" {: l$ |7 W5 D: {) j

  18. " t  _/ p8 R+ L# F# d7 t7 ~; N
  19.                         mount -o remount,ro /% M0 X3 a8 j2 {- F; k8 ]7 m! y& k

  20. $ m0 a! k2 O9 g. G* _4 G
  21.                         APP_PATH=/media/cryptofs/apps/palm.greenwoods.demo/ t# x8 A! Y7 q1 E* n  P) Y' W/ u

  22. % N5 B3 D$ H8 {; V
  23.                         /bin/cp -f $APP_PATH/usr/lib/luna/java/MyService.jar /usr/lib/luna/java/MyService.jar7 p4 o  Z5 [5 R
  24. : _- }# |; X7 j2 h/ c7 o% \8 @+ h
  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.service" m, g- ]: P5 G( y- M
  26. & [! R) r$ _, K2 W- V
  27.                         /bin/cp -f $APP_PATH/etc/event.d/palm.greenwoods.demo /etc/event.d/palm.greenwoods.demo: |) l: l' r7 ^0 h

  28. 5 I0 X2 F3 n. U% n! c8 v
  29.                         if [ -z "$IPKG_OFFLINE_ROOT" ]; then, j7 W3 \8 f) E/ a
  30.                           killall -9 java/ n' @) \$ M! p5 j+ o4 X
  31.                           mount -o remount,ro /
    0 `% e8 V+ @* F8 B) @! `
  32.                         fi
    % z0 h6 s3 Y4 K/ k
  33. 1 p* |4 ~" l$ i& M7 [. T; v
  34.                         stop java-serviceboot
    ; y$ m- \. O; p. _0 N$ w
  35.                         start java-serviceboot' x7 G* n4 d: h& @3 m
  36.                         start palm.greenwoods.demo; Y; @( M+ a# u8 T5 q+ n

  37. 1 s* {( p: s+ n2 ]
  38.                         exit 0( ^4 m% {: x5 P
  39.                 preinst
    - I" k; F4 u! p1 ]; J" t: }
  40.                         mount -o remount,rw /) ]* @7 H1 j+ s6 n0 t1 ?, j$ U
  41.                 #卸载服务脚本+ H" v0 i& B7 |, I# l2 M4 t
  42.                 prerm
    4 C) K* S6 M9 h9 C4 A! M
  43.                         #!/bin/sh2 A4 `. ]" g9 J1 X
  44.                         mount -o remount,rw /
    8 U1 s5 w9 c: Y# W
  45. ; t) l$ i$ d; X+ J) R# K: \5 p7 `
  46.                         stop java-serviceboot5 I6 L2 M% M. y( v! U' R8 F
  47.                         stop palm.greenwoods.demo- L" L, v$ Q+ x# w
  48. ( \  V# J- @9 `4 v+ J6 B6 ?
  49.                         /bin/rm -f /usr/lib/luna/java/MyService.jar
    0 Z& v( `3 Y) D+ {% t0 u! _
  50. + N$ Y) k) \+ T* E
  51.                         /bin/rm -f /usr/share/dbus-1/system-services/palm.greenwoods.demo.service
    0 m) R7 O5 O, B% i. B& a0 ^1 O

  52. % W: b" R3 k9 q, [7 C& T
  53.                         /bin/rm -f /etc/event.d/palm.greenwoods.demo4 Y/ L) ~9 G. [7 G, Q
  54. 1 {, x, I9 {- ~( X+ C9 G" s
  55.                         start java-serviceboot, {6 T' {* U8 F  j: ^
  56.         etc\event.d\
    8 Y+ P5 `$ [& y2 o/ N
  57.                 #启动服务器 文件名必须和 服务唯一ID 一致
    . U4 X4 P6 D" {
  58.                 palm.greenwoods.demo6 O0 S# l0 W- o7 h
  59.                         description "MyServer Service"
    9 z* l: V9 u. a* v
  60. 6 g  |1 d$ ?. }0 {  R- n: a5 V0 o! r1 q
  61.                         start on started java-serviceboot- ^: n0 y/ r2 C
  62. * x+ A& v# W2 |; {
  63.                         script
      b) s1 h/ k! E: a
  64.                                 sleep 10
    ) d* }8 Z' e& d  R$ N
  65.                                 returnTrue=0  z) x4 {$ k' Y* X/ }, P
  66.                                 tries=0
    0 r- q/ \: x/ p1 ?# ^3 R
  67.                                 while [ $returnTrue -eq 0 -a $tries -le 20 ]
    $ q! v" i: R- h
  68.                                 do
    # {, Y% w9 e" l8 f
  69.                                         returnVal=$(luna-send -n 1 luna://palm.greenwoods.demo/status '{}' 2>&1)
    6 V3 y9 I8 ^( _8 c
  70.                                         tries=`expr $tries + 1`
    6 S9 [: O1 t& L! z$ T' s2 x
  71.                                         if [ "$returnVal" = "** Message: serviceResponse Handling: 2, {"returnValue":true}" ]
    # t0 n0 _7 w; J: p! w. a- X
  72.                                         then# S# t. H9 a, M8 Y1 N! v3 v
  73.                                                 returnTrue=1
    % Q! W2 h  H4 w
  74.                                         else
    1 e0 @  A6 i' O! }, i
  75.                                                 sleep 10
    : s# D! |1 x; Y+ r$ i1 `: \* \
  76.                                         fi
    , I" f, p( J. F  D5 V
  77.                                 done- v+ {- S/ R1 p- S) s
  78.                         end script/ O' s+ K' V- j9 w) M7 R* N
  79.         usr\
    2 q9 l2 Q. P5 i5 u
  80.                 lib\luna\java\
    : L" W; O7 ^% V9 W7 P' M! b0 g  ?
  81.                         MyService.jar
    3 W& X! k" I' ^; y
  82.                 share\dbus-1\system-services\
    , ~8 @$ {( N* O3 Q
  83.                         palm.greenwoods.demo.service' X7 |  P8 W& l3 m* n
  84.                                 [D-BUS Service]
    / h9 `" g' e8 }
  85.                                 Name=palm.greenwoods.demo# h: l, k  g5 o* O" }& b9 i
  86.                                 Exec=/usr/bin/luna-helper 'luna://com.palm.vm/launch' '{"serviceName":"palm.greenwoods.demo","className":"palm.greenwoods.demo.MyService"}'
复制代码
所需打包工具 Ipk Packager.jar 选择 pack 所在目录 入图所示0 A4 Z, b" w. W6 F
(不好意思 无法传图片 请看附件 )- P( D8 a( w% R
三 : 前台调用
  1.         new Mojo.Service.Request("palm://palm.greenwoods.demo/", {
    9 B0 ?" `: M- l* Y
  2.                         method: "status",
    . |% W5 ]- W# V3 ~6 O* e: R; a) D
  3.                         onSuccess: this.listenStatus.bind(this),' W+ }! n. e5 E- r% H) K! w
  4.                         onFailure: this.serverFail.bind(this)
    + t. C4 `- o3 e  W' ~/ Z; F; L
  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 | 显示全部楼层
找到出错的原因了:# B  E$ D( Q7 \/ l2 S* K# k8 o$ S5 l& H
postinst中 * s( u( s2 }) m4 C8 c
mount -o remount,ro /6 H& |3 p! z7 ~1 W1 g. A
应该改为# W  R# r0 C3 f0 x4 s5 X- j7 F
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-4-4 10:34 , Processed in 0.331361 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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