栏目分类
开源技术 | 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
其它技术 | 资讯动态
排行榜
·WebService实现包--AXIS2学习笔记一
·3步把您的java程序转换为webservice
·WebService实现包--AXIS2学习笔记二
·WEB开发:使用JFreeChart生成热点图表
·使用JWSDP完成WebService在java的入门(一)
·使用Soap消息调用WebServices
·Axis下WebService的调用问题
·使用Javawebstart和JNLP技术来部署应用
·技术剖析:基于Axis的自定义对象序列化
·标签库的深入研究
·使用JFreeChart来创建基于web的图表
·基于Java的Web服务器工作原理(1)
·JBuilder+WebService之实战分析
·WebService和J2EE
·基于Java的Web服务器工作原理(2)
·Eclipse插件实现AxisWebService客户端
·WEB开发中的JAVA字符编码经验总结
·Axis1.1forJava进行WebServices开发
·如何在Linux下搭建Web应用环境
·使用JWSDP完成WebService在java的入门(二)

    您现在的位置: Linux宝库 >> Java >> XML >> WebServices >> 文章正文
3步把您的java程序转换为webservice
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/46235.html
联系:linuxmine#gmail.com
分类:[WebServices]
  1、选择要转换的java文件,生成class

  2、写wsdd

  3、发布

  剩下的就只有调用了wsdl2java

  我原来的系统是CICS的,对后台封装了一层,现在用webservice再封装一层,前台页面,控制,数据传输,数据处理统统都可以分开了,爽

  //以下是从网上找的关于AXIS的入门教程

  一、Axis安装 1、环境 J2SE SDK 1.3 or 1.4: 我使用 1.4.2 Servlet Container: 我使用的Tomcat 5.0

  


  2、到 http://ws.apache.org/Axis/网站下载Axis安装包

  3、解压缩安装包,将Axis_UNZIP_PATH\Axis-version\webapps下的Axis包拷贝到TOMCAT_HOME\webapps\下,以下约定Axis_HOME为该TOMCAT_HOME\webapps\Axis目录

  4、启动tomcat,访问http://localhost:8080/Axis 检查安装是否成功

  5、以上步骤执行成功,可以开发webservice例子了

  Axis支持三种web service的部署和开发,分别为:

  1、Dynamic Invocation Interface ( DII)

  2、Stubs方式

  3、Dynamic Proxy方式

  二、编写DII(Dynamic Invocation Interface )方式web服务

  1.编写服务端程序HelloClient

  public class HelloClient

  {

  public String getName(String name)

  {

  return "hello "+name;

  }

  }

  2、将源码拷贝到Axis_HOME下,重命名为 HelloClient.jws

  3、访问连接http://localhost:8080/Axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl

  4、编写访问服务的客户端 TestHelloClient.java

  import org.apache.Axis.client.Call;

  import org.apache.Axis.client.Service;

  import javax.xml.namespace.QName;

  import javax.xml.rpc.ServiceException;

  import java.net.MalformedURLException;

  import java.rmi.RemoteException;

  public class SayHelloClient2

  {

  public static void main(String[] args)

  {

  try

  {

  String endpoint =

  "http://localhost:8080/Axis/HelloClient.jws";

  Service service = new Service();

  Call call = null;

  call = (Call) service.createCall();

  call.setOperationName(new QName(

  "http://localhost:8080/Axis/HelloClient.jws",

  "getName"));

  call.setTargetEndpointAddress

  (new java.net.URL(endpoint));

  String ret = (String) call.invoke(new Object[]

  {"zhangsan"});

  System.out.println("return value is " + ret);

  }

  catch (Exception ex)

  {

  ex.printStackTrace();

  }

  }

  }

  三、编写Dynamic Proxy方式访问服务

  1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient

  2、编写代理接口

  public interface HelloClientInterface

  extends java.rmi.Remote

  {

  public String getName(String name)

  throws java.rmi.RemoteException;

  }

  3、编写并执行客户端程序TestHelloClient.java

  import javax.xml.rpc.Service;

  import javax.xml.rpc.ServiceFactory;

  import java.net.URL;

  import javax.xml.namespace.QName;

  public class TestHelloClient

  {

  public static void main(String[] args)

  {

  try

  {

  String wsdlUrl =

  "http://localhost:8080/Axis/HelloClient.jws?wsdl";

  String nameSpaceUri =

  "http://localhost:8080/Axis/HelloClient.jws";

  String serviceName = "HelloClientService";

  String portName = "HelloClient";

  ServiceFactory serviceFactory =

  ServiceFactory.newInstance();

  Service afService =

  serviceFactory.createService(new URL(wsdlUrl),

  new QName(nameSpaceUri, serviceName));

  HelloClientInterface proxy = (HelloClientInterface)

  afService.getPort(new QName(

  nameSpaceUri, portName),

  HelloClientInterface.class);

  System.out.println

  ("return value is "+proxy.getName("john") ) ;

  }catch(Exception ex)

  {

  ex.printStackTrace() ;

  }

  }

  }

  四、编写wsdd发布web服务,编写stub client访问web服务

  1、编写服务端程序server,SayHello.java,编译server.SayHello.java

  package server;

  public class SayHello

  {

  public String getName(String name)

  {

  return "hello "+name;

  }

  }

  2.编写LogHandler.java

  import org.apache.Axis.AxisFault;

  import org.apache.Axis.Handler;

  import org.apache.Axis.MessageContext;

  import org.apache.Axis.handlers.BasicHandler;

  import java.util.Date;

  public class LogHandler

  extends BasicHandler

  {

  public void invoke

  (MessageContext msgContext)

  throws AxisFault

  {

  /** Log an access each time

  we get invoked.

  */

  try {

  Handler serviceHandler

  = msgContext.getService();

  Integer numAccesses =

  (Integer)serviceHandler.getOption("accesses");

  if (numAccesses == null)

  numAccesses = new Integer(0);

  numAccesses = new Integer

  (numAccesses.intValue() + 1);

  Date date = new Date();

  String result =

  date + ": service " +

  msgContext.getTargetService() +

  " accessed " + numAccesses + " time(s).";

  serviceHandler.setOption

  ("accesses", numAccesses);

  System.out.println(result);

  } catch (Exception e)

  {

  throw AxisFault.makeFault(e);

  }

  }

  }

  3、编写wsdd文件

  deploy.wsdd

  <deployment xmlns=

  "http://xml.apache.org/Axis/wsdd/"

  xmlns:java=

  "http://xml.apache.org/Axis/wsdd/providers/java">

  <handler name="print" type="java:LogHandler"/>

  <service name="sayhello"

  provider="java:RPC">

  <requestFlow>

  <handler type="print"/>

  </requestFlow>

  <parameter name="className"

  value="server.SayHello"/>

  <parameter name="allowedMethods"

  value="*"/>

  </service>

  </deployment>

  3、将编译后的文件拷贝到Axis_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\Axis\WEB-INF\classes

  4、发布服务:

  java org.apache.Axis.client.AdminClient deploy.wsdd

  5、生成client stub文件

  a:方式1

  将SayHello.java拷贝到Axis_HOME/下,重命名为SayHello.jws,

  执行下面的命令生存client stub

  java org.apache.Axis.wsdl.WSDL2Java

  -p client

  http://localhost:8080

  /Axis/services/SayHello.jws?wsdl

  b:方式2

  执行如下命令生成SayHello.wsdl

  java org.apache.Axis.wsdl.Java2WSDL

  -oSayHello.wsdl -lhttp://localhost:8080

  /Axis/services/SayHello -nsayhello server.SayHello

  执行如下命令生成client stub

  java org.apache.Axis.wsdl.WSDL2Java

  SayHello.wsdl

  -p client

  生成的stub client文件列表为:

  1.SayHello.java

  2.SayHelloService.java。

  3.SayHelloServiceLocator.java

  4.SayHelloSoapBindingStub.java

  6、编写客户端程序,编译并执行

  public class SayHelloClient

  {

  public static void main(String[] args)

  {

  try

  {

  SayHelloService service = new client.

  SayHelloServiceLocator();

  client.SayHello_PortType

  client = service.getSayHello();

  String retValue=client.getName("zhangsan");

  System.out.println(retValue);

  }

  catch (Exception e)

  {

  System.err.println

  ("Execution failed. Exception: " + e);

  }

  }

  }

  您也可以写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.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="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

  <handler name="print" type="java:stub.LogHandler"/>

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

  <requestFlow>

  <handler type="print"/>

  </requestFlow>

  <parameter name="className"

  value="stub.server.SayHello"/>

  <parameter name="allowedMethods"

  value="*"/>

  </service>

  <transport name="http">

  <requestFlow>

  <handler type="URLMapper"/>

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

  </requestFlow>

  </transport>

  <transport name="local">

  <responseFlow>

  <handler type="LocalResponder"/>

  </responseFlow>

  </transport>

  </deployment>
本文来自:http://doc.linuxpk.com/46235.html
 
     最新更新
·使用WebLogicPlatform8.1进行威胁防护概述
·用SAAJ1.2发送接收二进制Web服务内容(二)
·Weblogic6.0中Servlet的注册方法
·Weblogic下servlet实现应用级身份认证
·介绍WebLogic的一些结构和特点
·使用JFreeChart来创建基于web的图表
·一种Web应用程序级别的Cluster实现技术
·JavaWebStart技术
·使用Javawebstart和JNLP技术来部署应用
·轻松玩转JavaWebStart
·JavaWebStart的作用
·用SAAJ1.2发送接收二进制Web服务内容(一)
·关于Javawebstart是干什么用的
·开发Web应用程序的快捷途径介绍
·Web服务代理组件创建JSFWeb服务客户端(5)
·Web服务代理组件创建JSFWeb服务客户端(4)
·Web服务代理组件创建JSFWeb服务客户端(3)
·Web服务代理组件创建JSFWeb服务客户端(2)
·Web服务代理组件创建JSFWeb服务客户端(1)
·创建JSFWeb项目和页面模板(3)
·创建JSFWeb项目和页面模板(4)
·创建JSFWeb项目和页面模板(2)
·创建JSFWeb项目和页面模板(1)
·基于Java的Web服务器工作原理(3)
·基于Java的Web服务器工作原理(2)
·JavaWebService
·Solaris8新增功能一览--(9)Web服务
·用Tea简化Web开发
·学用JavaWebStart
·WebService和J2EE