栏目分类
开源技术 | Hibernate | JUnit | Tomcat | JBoss | eclipse | Spring | ANT | Struts
java新手入门 | 基础入门 | 开发工具 | JDK | oop面向对象 | 安全配置
J2EE | mvcwea | 应用服务器 | Rmi/Corba/Jini | J2ee核心 | Servlet/JSP | EJB | JDBC/JDO
J2ME | 核心技术 | 嵌入式 | 无线开发
XML | WebServices | XMLBeans
高级技术 | 多线程 | 设计模式 | ULM/OO | p2p/Jxta | JavaSecurity
核心技术 | SwingAwtApplet | 高级编程 | 网络编程 | Jvm技术 | JavaMedia
其它技术 | 资讯动态
排行榜
·J2ME基础入门教程
·熟练使用J2ME在实际开发中的可选包MMAPI
·新手入门之j2me学习方法总结--摘录篇
·J2ME程序开发新手入门九大要点
·J2ME综合:如何在MIDP中实现图片放缩
·J2ME与WebService-KSOAP快速上手
·如何使用“月蚀”进行J2ME开发
·J2ME概述
·J2ME进度条与线程化模型实例解析
·J2ME实现可伸展目录树TreeList(图)
·J2ME的现状与发展
·告诉你J2ME是什么
·知己知彼——J2ME技术详
·Java思路开发易于移植的J2ME游戏
·关于J2ME——MIDP1.0中的碰撞检测
·J2ME工具:使用j2meunit进行游戏测试
·在J2ME中读取各种格式的文本文件
·如何搭建J2ME的开发环境之一二
·J2ME学习系列之如何将J2ME与XML集成
·使用J2ME中的page进行编码转化

    您现在的位置: Linux宝库 >> Java >> J2ME >> 核心技术 >> 文章正文
J2ME与WebService-KSOAP快速上手
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/45938.html
联系:linuxmine#gmail.com
分类:[核心技术]
  摘要

  本文用一个简明的例子,阐述了如何在手机上用KSOAP API来访问本地服务器上的Web Service。并且给出了详细的操作步骤和全部的Server,Client源代码。

  1. 服务端

  这次要发布的web service非常简单。它的功能是把从客户端传入的字符串中的小写字母转变成大写字母,再返回给客户端。Soap 服务器采用apache的AXIS(可以从http://ws.apache.org/axis/下载),应用服务器可以选用各种servlet 容器,我这里采用的是weblogic。

  1.1 实现类的源代码

  // StringProcessor.java

  package com.jagie.j2me.ws;

  public class StringProcessor {

  public StringProcessor() {

  }

  public String process(String name){

  return name.toUpperCase();

  }

  }

  1.2 发布步骤

  1.准备一个目录作为web application的发布目录,我这里的这个目录叫jagiews,这个目录的全路径中最好不要有空格和中文。我的发布目录结构如下:

  


  


  2.编译StringProcessor.java,把生成的StringProcessor.class置于: \jagiews\WEB-INF\classes\com\jagie\j2me\ws目录下。

  3.在jagiews\WEB-INF\lib 文件夹中置入以下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.在jagiews\WEB-INF目录下增加2个发布描述文件:server-config.wsdd,web.xml。

  #server-config.wsdd

  <?xml version="1.0" encoding="UTF-8"?>

  <deployment xmlns="http://xml.apache.org/axis/wsdd/"

  xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <globalConfiguration>

  <parameter name="adminPassword" value="admin"/>

  <parameter name="attachments.Directory" value="C:\Program Files

  \Apache Tomcat 4.0\webapps\axis\WEB-INF\attachments"/>

  <parameter name="attachments.implementation"

  value="org.apache.axis.attachments.AttachmentsImpl"/>

  <parameter name="sendXsiTypes" value="true"/>

  <parameter name="sendMultiRefs" value="true"/>

  <parameter name="sendXMLDeclaration" value="true"/>

  <parameter name="axis.sendMinimizedElements" value="true"/>

  <requestFlow>

  <handler type="java:org.apache.axis.handlers.JWSHandler">

  <parameter name="scope" value="session"/>

  </handler>

  <handler type="java:org.apache.axis.handlers.JWSHandler">

  <parameter name="scope" value="request"/>

  <parameter name="extension" value=".jwr"/>

  </handler>

  </requestFlow>

  </globalConfiguration>

  <handler name="LocalResponder"

  type="java:org.apache.axis.transport.local.LocalResponder"/>

  <handler name="URLMapper"

  type="java:org.apache.axis.handlers.http.URLMapper"/>

  <handler name="RPCDispatcher"

  type="java:org.apache.axis.providers.java.RPCProvider"/>

  <handler name="Authenticate"

  type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

  <handler name="MsgDispatcher"

  type="java:org.apache.axis.providers.java.MsgProvider"/>

  <service name="AdminService" provider="java:MSG">

  <parameter name="allowedMethods" value="AdminService"/>

  <parameter name="enableRemoteAdmin" value="false"/>

  <parameter name="className" value="org.apache.axis.utils.Admin"/>

  <namespace>http://xml.apache.org/axis/wsdd/</namespace>

  </service>

  <service name="Version" provider="java:RPC">

  <parameter name="allowedMethods" value="getVersion"/>

  <parameter name="className" value="org.apache.axis.Version"/>

  </service>

  <!--

  your service

  begin-->

  <service name="StringProcess" provider="java:RPC">

  <parameter name="allowedMethods" value="process"/>

  <parameter name="className"

  value="com.jagie.j2me.ws.StringProcessor"/>

  </service>

  <!-- your service

  end -->

  <transport name="http">

  <requestFlow>

  <handler type="URLMapper"/>

  <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>

  </requestFlow>

  </transport>

  <transport name="local">

  <responseFlow>

  <handler type="java:org.apache.axis.transport.local.LocalResponder"/>

  </responseFlow>

  </transport>

  </deployment>

  # web.xml

  <?xml version="1.0" encoding="ISO-8859-1"?>

  <!DOCTYPE web-app

  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

  "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

  <web-app>

  <display-name>Apache-Axis</display-name>

  <servlet>

  <servlet-name>AxisServlet</servlet-name>

  <display-name>Apache-Axis Servlet</display-name>

  <servlet-class>

  org.apache.axis.transport.http.AxisServlet

  </servlet-class>

  </servlet>

  <servlet>

  <servlet-name>AdminServlet</servlet-name>

  <display-name>Axis Admin Servlet</display-name>

  <servlet-class>

  org.apache.axis.transport.http.AdminServlet

  </servlet-class>

  <load-on-startup>100</load-on-startup>

  </servlet>

  <servlet>

  <servlet-name>SOAPMonitorService</servlet-name>

  <display-name>SOAPMonitorService</display-name>

  <servlet-class>

  org.apache.axis.monitor.SOAPMonitorService

  </servlet-class>

  <init-param>

  <param-name>SOAPMonitorPort</param-name>

  <param-value>5001</param-value>

  </init-param>

  <load-on-startup>100</load-on-startup>

  </servlet>

  <servlet-mapping>

  <servlet-name>AxisServlet</servlet-name>

  <url-pattern>/servlet/AxisServlet</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

  <servlet-name>AxisServlet</servlet-name>

  <url-pattern>*.jws</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

  <servlet-name>AxisServlet</servlet-name>

  <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

  <servlet-name>SOAPMonitorService</servlet-name>

  <url-pattern>/SOAPMonitor</url-pattern>

  </servlet-mapping>

  <!-- uncomment this if you want the admin servlet -->

  <!--

  <servlet-mapping>

  <servlet-name>AdminServlet</servlet-name>

  <url-pattern>/servlet/AdminServlet</url-pattern>

  </servlet-mapping>

  -->

  <!-- currently the W3C havent settled on a media type for WSDL;

  http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft

  for now we go with the basic 'it's XML' response -->

  <mime-mapping>

  <extension>wsdl</extension>

  <mime-type>text/xml</mime-type>

  </mime-mapping>

  <mime-mapping>

  <extension>xsd</extension>

  <mime-type>text/xml</mime-type>

  </mime-mapping>

  </web-app>

  5.开启你的application server,把目录jagiews发布为一个名叫jagiews的web application。

  6.测试:打开浏览器,输入网址(这里使用的是weblogic,其他的服务器请酌情修改):

  http://localhost:7001/jagiews/services/StringProcess?method=process&name=qqqq,

  如果浏览器能在返回的xml文档中显示字符串"QQQQ",恭喜你,你的web service发布成功了。如果发布不成功,请按以上发布步骤检查一下。

  2. 客户端

  客户端自然是用MIDlet了,不过用什么方式来访问web service呢?其实有3种访问方
本文来自:http://doc.linuxpk.com/45938.html
 
     最新更新
·深入了解J2ME的几个重要概念
·J2ME学习笔记(6)—连接MIDlet到文本文件
·J2ME学习笔记(5)—MIDlets中的图形编程
·J2ME学习笔记(4)—用MIDPAPI开发MIDlets
·J2ME学习笔记(3)—初次接触MIDlets
·J2ME学习笔记(2)—平台体系结构详解
·J2ME学习笔记(1)—平台介绍及简单实例
·J2METimer-更简单的实现多任务调度执行
·J2ME基础知识
·J2MEMIDP提供的最重要的图形元素
·精通J2ME中的HelloWorld
·J2METimer使用指南
·请关注J2MEWTK2.2的新特性
·详细介绍并掌握J2ME的安全结构
·如何使用“月蚀”进行J2ME开发
·如何搭建J2ME的开发环境之一二
·J2ME编程实例---之数字键的测试
·利用J2ME与ASP建立数据库连接
·J2ME平台构件及开发应用程序示例
·J2ME(CLDC/MIDP)简介
·关于J2MEMIDP1.0.3中的安全问题简述
·学习在J2ME中使用代码
·J2ME的起源和发展历程
·认识了解“J2ME”
·探索J2ME:用GCF通信
·探索J2ME:使用记录管理系统
·探索J2ME:对记录进行排序
·浅析J2EE、J2SE和J2ME
·J2ME应用基础
·探索J2ME:创建开销细节表单