J2ME与Web Service.docx
- 文档编号:7748717
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:11
- 大小:18.54KB
J2ME与Web Service.docx
《J2ME与Web Service.docx》由会员分享,可在线阅读,更多相关《J2ME与Web Service.docx(11页珍藏版)》请在冰豆网上搜索。
J2ME与WebService
J2ME与WebService-KSOAP的罗曼史
作者:
文章来源:
发布日期:
2006年10月17日 浏览次数:
66次
J2ME与WebService-KSOAP的罗曼史
----J2ME与WebService-KSOAP的快速上手
作者:
Cleverpig
版权声明:
可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
原文地址:
关键词:
j2mesoapwebservice
1、服务端
这次要发布的webservice非常简单。
它的功能是把从客户端传入的字符串中的小写字母转变成大写字母,再返回给客户端。
Soap服务器采用apache的AXIS(可以从http:
//ws.apache.org/axis/下载),应用服务器可以选用各种servlet容器,我这里采用的是weblogic。
1.1实现类的源代码:
//StringProcessor.java
packagecom.jagie.j2me.ws;
publicclassStringProcessor
{
publicStringProcessor()
{
}
publicStringprocess(Stringname)
{
returnname.toUpperCase();
}
}
1.2发布步骤
1.准备一个目录作为webapplication的发布目录,我这里的这个目录叫jagiews,这个目录的全路径中最好不要有空格和中文。
我的发布目录结构如下:
2.编译StringProcessor.java,把生成的StringProcessor.class置于:
jagiewsWEB-INFclassescomjagiej2mews目录下。
3.在jagiewsWEB-INFlib文件夹中置入以下axis服务器需要的jar文件axis.jar,axis-ant.jar,commons-discovery.jar,commons-logging.jar,jaxrpc.jar,log4j-1.2.8.jar,saaj.jar,wsdl4j.jar。
这些文件可以在http:
//ws.apache.org/axis/下载。
4.在jagiewsWEB-INF目录下增加2个发布描述文件:
server-config.wsdd,web.xml。
#server-config.wsdd
xmlversion="1.0"encoding="UTF-8"?
>
"http: //xml.apache.org/axis/wsdd/" xmlns: java= "http: //xml.apache.org/axis/wsdd/providers/java"> "adminPassword"value="admin"/> "attachments.Directory" value="C: ProgramFiles ApacheTomcat4.0webapps axisWEB-INFattachments"/> "attachments.implementation" value="org.apache.axis. attachments.AttachmentsImpl"/> "sendXsiTypes" value="true"/> "sendMultiRefs" value="true"/> "sendXMLDeclaration" value="true"/> "axis.sendMinimizedElements" value="true"/> "java: org.apache.axis.handlers.JWSHandler"> name="scope" value="session"/> "java: org.apache.axis.handlers.JWSHandler"> name="scope" value="request"/> name="extension" value=".jwr"/> "LocalResponder" type="java: org.apache.axis. transport.local.LocalResponder"/> type="java: org.apache.axis. handlers.http.URLMapper"/> type="java: org.apache.axis. providers.java.RPCProvider"/> type="java: org.apache.axis. handlers.SimpleAuthenticationHandler"/> type="java: org.apache.axis. providers.java.MsgProvider"/> provider="java: MSG"> value="AdminService"/> value="false"/> value="org.apache.axis.utils.Admin"/> http: //xml.apache.org/axis/wsdd/ provider="java: RPC"> value="getVersion"/> value="org.apache.axis.Version"/> -- yourservice begin--> provider="java: RPC"> value="process"/> value="com.jagie.j2me. ws.StringProcessor"/> --yourservice end--> "java: org.apache.axis.handlers. http.HTTPAuthHandler"/> org.apache.axis. transport.local.LocalResponder"/> #web.xml xmlversion="1.0" encoding="ISO-8859-1"? > DOCTYPEweb-app PUBLIC"-//SunMicrosystems, Inc.//DTDWebApplication2.3//EN" " /j2ee/dtds/web-app_2.2.dtd"> Servlet org.apache.axis.transport.http.AxisServlet org.apache.axis.transport.http.AdminServlet org.apache.axis.monitor.SOAPMonitorService --uncommentthisifyouwanttheadminservlet--> -- --> --currentlytheW3Chaventsettled onamediatypeforWSDL; http: //www.w3.org/TR/2003/ WD-wsdl12-20030303/#ietf-draft fornowwegowiththebasic 'it'sXML'response--> 5.开启你的applicationserver,把目录jagiews发布为一个名叫jagiews的webapplication。 6.测试: 打开浏览器,输入网址(这里使用的是weblogic,其他的服务器请酌情修改): http: //localhost: 7001/jagiews/services/StringProcess? method=process&name=qqqq,如果浏览器能在返回的xml文档中显示字符串"QQQQ",恭喜你,你的webservice发布成功了。 如果发布不成功,请按以上发布步骤检查一下。 2、客户端 客户端自然是用MIDlet了,不过用什么方式来访问webservice呢? 其实有3种访问方式 直接用HttpConnection访问http: //localhost: 7001/jagiews/services/StringProcess? method=process&name=qqqq,得到xml的返回数据,然后用kxml(http: //kxml.enhydra.org/)解析,得到返回值。 如果你的手机支持MIDP2.0的话,可以考虑使用JSR172。 用ksoapapi。 这里讲述第三种方式。 使用之前,你需要从http: //ksoap.enhydra.org/software/downloads/index.html下载稳定的ksoap包,置于你的classpath中。 2.1客户端源代码 2.1.1WSClientMIDlet.java packagecom.jagie.j2me.ws; importjavax.microedition.midlet.*; importjavax.microedition.lcdui.*; /** * Title: * Description: * Copyright: Copyright(c) 2004 * Company: *@authornotattributable *@version1.0 */ publicclassWSClientMIDlet extendsMIDlet { staticWSClientMIDletinstance; publicWSClientMIDlet() { instance=this; } publicvoidstartApp() { Displaydisplay= Display.getDisplay(this); DisplayFormdisplayable= newDisplayForm(); display.setCurrent(displayable); } publicvoidpauseApp() { } publicvoiddestroyApp (booleanunconditional) { } publicstaticvoidquitApp() { instance.destroyApp(true); instance.notifyDestroyed(); instance=null; } } 2.1.2DisplayForm.java packagecom.jagie.j2me.ws; importjavax.microedition.lcdui.*; /** * Title: * Description: * Copyright: Copyright(c) 2004 * Company: *@authornotattributable *@version1.0 */ publicclassDisplayForm extendsForm implementsCommandListener, Runnable { privateTextFieldtextField1; privateThreadt; publicDisplayForm() { super("字符转换webservice测试"); try { jbInit(); } catch(Exceptione) { e.printStackTrace(); } } privatevoidjbInit() throwsException { //SetupthisDisplayable tolistentocommandevents textField1=newTextField ("","",15,TextField.ANY); this.setCommandListener(this); textField1.setLabel ("待处理的字符串是: "); textField1.setConstraints (TextField.ANY); textField1.setInitialInputMode ("Tester"); setCommandListener(this); //addtheExitcommand addCommand(newCommand ("Exit",Command.EXIT,1)); addCommand(newCommand ("Process",Command.OK,1)); this.append(textField1); } publicvoidcommandAction (Commandcommand, Displayabledisplayable) { if(command.getCommandType ()==Command.EXIT) { WSClientMIDlet.quitApp(); } elseif(command.getCommandType() ==Command.OK) { t=newThread(this); t.start(); } } publicvoidrun() { Strings1= textField1.getString(); Strings2= newStringProcessorStub().process(s1); StringItemresultItem= newStringItem("处理后的字符串是: ",s2); this.append(resultItem); } } 2.1.3StringProcessorStub.java packagecom.jagie.j2me.ws; importorg.ksoap.*; importorg.ksoap.transport.HttpTransport; /** * Title: * Description: * Copyright: Copyright(c)2004 * Company: *@authornotattributable *@version1.0 */ publicclassStringProcessorStub { publicStringProcessorStub() { } publicStringprocess(Stringname) { Stringresult
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2ME与Web Service J2ME Web