欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小试Netbeans6.5中的“web应用程序的JavaMe客户端” JavaMEWeb应用服务器NetbeansWebService 

程序员文章站 2022-07-14 09:50:24
...

久没有写博客了,这几天心情也不太好,无心做事,码点文字吧。

从Eclipse换到Netbeans,是反复折腾了几回的,总在它们之间徘徊不定,不说也罢。谈谈Netbeans里的“Web应用程序的Java Me客户端”。(不好意思,因为我用的是Netbeans6.5中文版,那个7.0M1的bug太多,又卸掉了)。

这个功能基本可以取代webservice了,毕竟很多的终端还是不支持JSR 172的。
其实它也就是一个基于HTTP协议实现远程方法调用的代码模板,你完全可以自己实现,只是Netbeans给了你极大的方便。


也谈谈使用吧。
一般建议,先创建一个web应用程序,然后配好它的DataSource等资源。


为它创建一个类,名称随便起,我就拿原来的webservice的类来弄的,叫NewsService 吧。
它负责封装所需的业务逻辑,暴露出供远程调用的方法。

实在没有什么特别的东西,你想怎么弄就怎么弄好了。

然后创建你的客户端项目,一个Java Me的工程,然后在项目窗口中点它的右键菜单中就有那个“新建-Web应用程序的Java Me客户端”,跟着向导,基本上就OK了。

第一步是配置接口servlet,用来实现客户端与服务端的通讯,也就是说它负责接收客户端的请求,并调用上面的那个NewsService类完成相应操作,然后回复给客户端。

第二步是选择真正完成业务逻辑的类,即上面那个NewsService,选择它包含的哪些方法要提供给远程Java Me客户端来调用。

第三步是配置一个客户端的代码,一个Client类,它负责封装远程的方法,实现将本地方法调用转换成Http的请求,并将服务器的响应转换成方法的返回值。

Netbeans会自动生成一堆代码,就OK了。

来看看生成的代码,先看服务器端的:

除了那个接口Servlet以外,还有两个辅助类Utility.java JavonGateway.java和一个接口 InvocationAbstraction.java。
从servlet开始看起,它的doPost,从请求中按byte流读进来,invokeMethod对应的方法。

Utility类负责参数与结果的读写操作。而JavonGateway则是各个远程方法的代理封装。

再看客户端的代码,一个WebToMobileClient.java以及一个WebToMobileClient.wsclient的描述文件。

WebToMobileClient除了实现了几个与远程方法同名的方法以外,它的核心在于那个invokeServer,负责将本地调用转换成byte流,通过POST发送到服务器上的WebToMobileServlet。


使用这个Web应用客户端的功能,只有一点要注意的:就是返回值尽量不使用自定义类。我试了,发现如果返回值是自定义类型,还需要自己为这个类来修改utility的代码,否则它不会自动序列化你自定义的类,可是代码上又明明白白的写着, This file is generated. Please do not change,矛盾啊!