找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4751|回复: 11

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

[复制链接]
发表于 2010-9-19 12:05 | 显示全部楼层 |阅读模式
前段时间研究了下webos 开发, 随便请教了几位前辈 , 大致了解了webos的前后台调用机制(即:javascript 调用 java service) .有几位朋友询问过相关问题,我就不一一回复了, 就在这里献丑了.../ _+ I2 L  j% b. ^$ v2 W2 y
一:java service 开发:5 c! ^! y# y; a0 T! K

- E7 V/ F; ^: }: _jar :! h# P: e, K* z6 O3 E& M, ]0 j* M
serviceframework.jar , json.jar  (在palm 模拟器里面有 抱歉 少了个 lunaservice.jar 这个是处理异常的)

  1. 2 _& w8 O  V* c
  2. code :  MyService.java3 t* J8 U! R4 O. b1 p6 M; d2 s" r

  3. - G) v- x0 P0 x( ?5 X
  4. package  palm.greenwoods.demo  _  L' R& u6 f8 g7 X
  5. import com.palm.luna.LSException;+ P& n. Y$ u; a; Q6 z) i  E
  6. import com.palm.luna.service.LunaServiceThread;
    * G7 t& v1 O4 a( [7 N& r
  7. import com.palm.luna.service.ServiceMessage;* e, m' v+ `) p9 H
  8. import org.json.JSONException;* z  j1 I6 \0 ~
  9. import org.json.JSONObject;
    2 I$ `) h" v' u) ~& T
  10. , k3 o8 y% N2 x$ T8 r
  11. public class MyService extends LunaServiceThread {+ C/ C# g0 R" I/ m! R  f* s2 G
  12.      public MyService () throws IOException {
    7 ^7 I! e; x" D; G
  13.      //code
    $ [$ ]3 t* k7 L
  14.      }
    ) n* b9 ~1 p8 L8 G& z

  15.   ^4 H: B, ]( K8 J
  16.    @LunaServiceThread.PublicMethod //新的service 接口
    8 E- m& D9 e( }* M0 X$ i- N
  17.     public void status(ServiceMessage msg) throws JSONException, LSException,
    5 }4 Y! a. [+ r, P
  18.             InterruptedException, IOException {
    6 t5 b' t4 R- f! G
  19.         JSONObject reply = new JSONObject();
    2 s4 _) H, l7 s6 G( X
  20.         reply.put("action","status");
    # U( G0 Q4 j& t( B! M! D$ k  I# h
  21.         reply.put("status", status);1 X8 u) V) c$ j" q
  22.        msg.respond(reply.toString()) ;//ServiceMessage   msg  这个是前端的 请求对象 respond 方法可以返回数据到前端 js; j9 _, i/ ]' p9 t( U4 `
  23.     }- I; i* j% o. p2 i" f0 L. S
  24. }
复制代码
Export => MyService.jar 6 t9 l9 W' A9 m, ]; X$ |% d, o1 G1 k

# w. @2 @" B5 b5 G* y4 \) ^$ i7 A
/ ?; g- Y0 t5 P6 f' V二:java service 打包:
) {) c) Y9 G7 H. ~
6 n8 M0 [) D& A% e/ @目录结构
  1. pack \
    ! L1 N1 C" f6 J* D! g! ?0 M9 N
  2.         CONTROL\4 g! w2 W0 R9 f% M8 |2 O1 Z
  3.                 #配置问题 palm.greenwoods.demo 为服务唯一ID3 B! Q) R  A3 B& W8 l) U' G& O. H' o
  4.                 control ( W8 o1 g1 W5 `  T
  5.                         Package: palm.greenwoods.demo3 D0 [, v1 Y# V& c' w' |
  6.                         Priority: optional- G/ Y$ u7 T2 o6 O- B; a
  7.                         Section: Network; p8 w* B* ^2 u9 n. Z# v
  8.                         Version: 1.02 X. U4 U2 J% T/ t
  9.                         Architecture: all
    6 a5 |! _% l. q2 ~" f
  10.                         Maintainer: GreenWoods [email]yulim.wang@gmail.com[/email]7 i3 k5 J2 I( `, w7 ?$ @3 U
  11.                         Depends:
    - R1 G0 o/ Z6 p% I. B
  12.                         Description: MyServer Service+ w9 w( G3 p0 @8 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"}
    * |% W8 f6 d0 u+ X0 v- k8 I1 [
  14.                 #服务安装执行脚本2 }# f+ P$ E$ Z7 O: T
  15.                 postinst+ Q7 N0 h* W6 i9 w; [4 Z7 }5 D
  16.                         #!/bin/sh! Z: N7 b" l8 L: l. x7 j
  17.                         start on started java-serviceboot+ x/ H6 v5 ?' ]) l- M# i' P/ x

  18. 4 D) P4 ]2 {/ {4 k4 }
  19.                         mount -o remount,ro /
    " @8 A3 z$ k: I
  20. 2 ?' W/ s/ E$ S7 a! q7 P# R/ F' O
  21.                         APP_PATH=/media/cryptofs/apps/palm.greenwoods.demo
    9 n, I$ K- [! Y% s: O; r/ `
  22. & {6 @6 V  p$ c6 S, s7 J  W
  23.                         /bin/cp -f $APP_PATH/usr/lib/luna/java/MyService.jar /usr/lib/luna/java/MyService.jar
    , h: x" q- `; b1 _- p' x

  24. ( W3 |% t9 o6 t" I8 G
  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.service2 n: h- x  O: W( l5 v) e7 o
  26. 2 l& M+ ~& I( B4 y) w
  27.                         /bin/cp -f $APP_PATH/etc/event.d/palm.greenwoods.demo /etc/event.d/palm.greenwoods.demo! y& n2 J3 X% a; L+ s, U

  28. 9 {+ \& r3 w$ q. r% F3 e
  29.                         if [ -z "$IPKG_OFFLINE_ROOT" ]; then
    , z- L/ Y3 ~2 B. t4 o3 b
  30.                           killall -9 java
    ) j" Y+ e' A$ N& I- L' z+ m
  31.                           mount -o remount,ro /
    * g* `! t+ z' U7 O, X
  32.                         fi
    1 V9 H- v; T$ f! l0 r- t6 |
  33. 1 c" |) X8 E' K8 q4 {
  34.                         stop java-serviceboot4 P( c' V4 E# q
  35.                         start java-serviceboot
    ) X& N+ E6 [2 r/ H, j1 g  I
  36.                         start palm.greenwoods.demo2 J8 I" G/ T- a
  37. 3 ^3 @# C6 h2 j, z7 Z  N6 j- ^
  38.                         exit 0
    5 `* p5 w: e0 |) i( M
  39.                 preinst$ |+ F& B6 u/ [/ W- g0 L" `  p
  40.                         mount -o remount,rw /! Z% E& ~1 p) ^% n& e9 r" c9 ]
  41.                 #卸载服务脚本
    9 A" e# o& Y/ m& T. y3 a) {
  42.                 prerm& j! l+ w5 t) Q! {. \# P  ^
  43.                         #!/bin/sh
    4 {: V$ c' S1 l( p0 f9 B* m
  44.                         mount -o remount,rw /: s+ t3 R; @* j4 a$ n+ Q" `  K

  45. ) h& `9 q9 a  {& p; d
  46.                         stop java-serviceboot
    0 Y6 c3 ^, Q5 K1 a, b# W3 \
  47.                         stop palm.greenwoods.demo# c' \: R+ g  t* r/ S, V; \! b+ ^
  48. - G+ x* P% y+ g7 n
  49.                         /bin/rm -f /usr/lib/luna/java/MyService.jar
    $ B# D" e! e/ L8 R& X

  50. " g0 \* M5 F# E  |# U& n' Q( f
  51.                         /bin/rm -f /usr/share/dbus-1/system-services/palm.greenwoods.demo.service
    4 @* w+ G& p8 I3 d+ ~
  52. ! C& n; _- K# i# }: G
  53.                         /bin/rm -f /etc/event.d/palm.greenwoods.demo+ m( `( C6 O! W
  54. 2 j0 Q# L. ~0 w6 \
  55.                         start java-serviceboot
    / C7 ?" U1 b: a
  56.         etc\event.d\
    1 J1 ]8 P2 g$ H( F3 a; g, g3 J/ z# K# \
  57.                 #启动服务器 文件名必须和 服务唯一ID 一致, A- O7 }' `/ s. s' F
  58.                 palm.greenwoods.demo
    ) r: K2 R. b+ o2 T2 F
  59.                         description "MyServer Service"
    ; l9 Q1 n8 R0 O% Y- \( R  F
  60. 0 ~* Y6 z9 ~+ l, d8 O6 q# z" \
  61.                         start on started java-serviceboot
    - ^  S) [8 ]8 [
  62.   L5 W6 M* [% e
  63.                         script
    , a+ l" H1 D0 X
  64.                                 sleep 10
    ' W7 c* d% G! ]) y: Z
  65.                                 returnTrue=0
    " d" ^3 q2 u( m' ^0 z( O- p
  66.                                 tries=0
    7 \* w8 P7 n6 \5 Y0 p5 K0 q
  67.                                 while [ $returnTrue -eq 0 -a $tries -le 20 ]
    ) F/ a+ g  \* O
  68.                                 do
    8 S8 W3 D, p! m  i* D
  69.                                         returnVal=$(luna-send -n 1 luna://palm.greenwoods.demo/status '{}' 2>&1): [  R3 b1 e: Y" L4 t* l3 c: p
  70.                                         tries=`expr $tries + 1`2 o! ]( n; u8 \5 f# @8 v
  71.                                         if [ "$returnVal" = "** Message: serviceResponse Handling: 2, {"returnValue":true}" ]
    9 _* A  |# z' I& R
  72.                                         then
    # i+ ~' c5 g8 c. z' d5 m
  73.                                                 returnTrue=1; g& W+ O* y+ e5 {' G7 Q6 ]! H
  74.                                         else* ^# A6 Y8 I* `
  75.                                                 sleep 10# g  \) Q/ H" d
  76.                                         fi
    & R# i8 r) _$ {# P" O
  77.                                 done6 e7 H! }4 S. ]$ k* P
  78.                         end script1 Q  c' s3 Q% d/ d
  79.         usr\  ]8 P  v$ l$ D* V; d
  80.                 lib\luna\java\9 ^1 e/ v& {9 B* _
  81.                         MyService.jar2 o6 z1 _. u7 N5 g
  82.                 share\dbus-1\system-services\
    * `; s1 {  w" j$ b6 M8 v' O
  83.                         palm.greenwoods.demo.service
    # a% J. X3 O2 e* \/ E% e
  84.                                 [D-BUS Service]2 K3 X% x7 {- w) X
  85.                                 Name=palm.greenwoods.demo
    # {  g& b% F7 `! u7 `7 n6 n3 F
  86.                                 Exec=/usr/bin/luna-helper 'luna://com.palm.vm/launch' '{"serviceName":"palm.greenwoods.demo","className":"palm.greenwoods.demo.MyService"}'
复制代码
所需打包工具 Ipk Packager.jar 选择 pack 所在目录 入图所示
# N4 M. u4 d9 z0 a6 M. {3 `(不好意思 无法传图片 请看附件 )5 a8 V$ F0 l1 Y4 c2 y1 Q
三 : 前台调用
  1.         new Mojo.Service.Request("palm://palm.greenwoods.demo/", {
    3 y2 ^* ~0 ^7 I4 C* U* Z' M
  2.                         method: "status",+ O2 }5 v" N4 K2 L- z
  3.                         onSuccess: this.listenStatus.bind(this),
    ) Z( v* Y4 B# X" u9 s
  4.                         onFailure: this.serverFail.bind(this)
    ! L( ~" {# Y/ ~! S" C
  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 | 显示全部楼层
找到出错的原因了:3 t( R( ~  w. N5 o9 L
postinst中
4 m+ x: J5 G9 o/ |& ~mount -o remount,ro /
% g( P& }* S, Y0 c/ [: U9 _2 C5 Y应该改为% K, d9 ?- i8 S! e; c! R! ^; L
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-26 07:31 , Processed in 0.353519 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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