- 浏览: 174951 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (186)
- [网站分类]4.其他技术区 (93)
- [网站分类]6.转载区(Java技术文章转载, 请注明原文出处) (4)
- [网站分类]3.非技术区 (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (28)
- HTML&CSS (0)
- 感悟生活 (4)
- c#(.net) (1)
- [网站分类]2.Java新手区 (32)
- [网站分类]5.提问区(Java方面的技术提问) (1)
- java (6)
- web前端 (7)
- php (0)
- C++ (1)
- python (0)
- 互联网应用 (0)
最新评论
-
lliiqiang:
请求单线程资源只能等待结果.
Applet 与JS通信 -
feng2qin:
期待你的精彩回到。QQ:864479410
Applet 与JS通信 -
feng2qin:
我想问一句;哥们儿,applet程序中调用js,你真的成功了嘛 ...
Applet 与JS通信 -
lyaixsp:
...
ExtJS 入门学习之 window与panel篇 -
longzijian:
不知道 java-he 现在找到数组的这种特性 的原因在那里
和网友关于javascript数组的讨论
总结WebService的使用
一、安装
jsp程序员应该不会装错。首先下载axis,解压缩。将axis目录拷贝到tomcat下webapps下。ok,对就这么简单。
启动tomcat,访问http://localhost:8080/axis 检查安装是否成功
二、部署(三种方式)
(1)、Dynamic Invocation Interface ( DII)
我认为这是其中最简单的方式,也是最不想介绍的方式。
1.编写服务端程序HelloClient
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1 public class HelloClient
2 {
3 public String getName(String name)
4 {
5 return "hello "+name;
6 }
7 }
2 {
3 public String getName(String name)
4 {
5 return "hello "+name;
6 }
7 }
2、将源码拷贝到Axis_HOME下,重命名为 HelloClient.jws
3、访问连接http://localhost:8080/axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl
4、编写访问服务的客户端 TestHelloClient.java
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 import org.apache.Axis.client.Call;
2 import org.apache.Axis.client.Service;
3 import javax.xml.namespace.QName;
4 import javax.xml.rpc.ServiceException;
5 import java.net.MalformedURLException;
6 import java.rmi.RemoteException;
7
8 public class SayHelloClient2
9 {
10 public static void main(String[] args)
11 {
12 try
13 {
14 String endpoint =
15 "http://localhost:8080/Axis/HelloClient.jws";
16
17 Service service = new Service();
18 Call call = null;
19
20 call = (Call) service.createCall();
21
22 call.setOperationName(new QName(
23 "http://localhost:8080/Axis/HelloClient.jws",
24 "getName"));
25 call.setTargetEndpointAddress
26 (new java.net.URL(endpoint));
27
28 String ret = (String) call.invoke(new Object[]
29 {"zhangsan"});
30 System.out.println("return value is " + ret);
31 }
32 catch (Exception ex)
33 {
34 ex.printStackTrace();
35 }
36 }
37 }
2 import org.apache.Axis.client.Service;
3 import javax.xml.namespace.QName;
4 import javax.xml.rpc.ServiceException;
5 import java.net.MalformedURLException;
6 import java.rmi.RemoteException;
7
8 public class SayHelloClient2
9 {
10 public static void main(String[] args)
11 {
12 try
13 {
14 String endpoint =
15 "http://localhost:8080/Axis/HelloClient.jws";
16
17 Service service = new Service();
18 Call call = null;
19
20 call = (Call) service.createCall();
21
22 call.setOperationName(new QName(
23 "http://localhost:8080/Axis/HelloClient.jws",
24 "getName"));
25 call.setTargetEndpointAddress
26 (new java.net.URL(endpoint));
27
28 String ret = (String) call.invoke(new Object[]
29 {"zhangsan"});
30 System.out.println("return value is " + ret);
31 }
32 catch (Exception ex)
33 {
34 ex.printStackTrace();
35 }
36 }
37 }
(2)、Stubs方式
这种方式对自己来说记忆很深刻,做的第一个小项目,调用别人提供的ws就是这种方式。
1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient
2、编写代理接口
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1 public interface HelloClientInterface
2 extends java.rmi.Remote
3 {
4 public String getName(String name)
5 throws java.rmi.RemoteException;
6 }
2 extends java.rmi.Remote
3 {
4 public String getName(String name)
5 throws java.rmi.RemoteException;
6 }
3、编写并执行客户端程序TestHelloClient.java
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1
2 import javax.xml.rpc.Service;
3 import javax.xml.rpc.ServiceFactory;
4 import java.net.URL;
5 import javax.xml.namespace.QName;
6
7 public class TestHelloClient
8 {
9 public static void main(String[] args)
10 {
11 try
12 {
13 String wsdlUrl =
14 "http://localhost:8080/Axis/HelloClient.jws?wsdl";
15 String nameSpaceUri =
16 "http://localhost:8080/Axis/HelloClient.jws";
17 String serviceName = "HelloClientService";
18 String portName = "HelloClient";
19
20 ServiceFactory serviceFactory =
21 ServiceFactory.newInstance();
22 Service afService =
23 serviceFactory.createService(new URL(wsdlUrl),
24 new QName(nameSpaceUri, serviceName));
25 HelloClientInterface proxy = (HelloClientInterface)
26 afService.getPort(new QName(
27 nameSpaceUri, portName),
28 HelloClientInterface.class);
29 System.out.println
30 ("return value is "+proxy.getName("john") ) ;
31 }catch(Exception ex)
32 {
33 ex.printStackTrace() ;
34 }
35 }
36 }
2 import javax.xml.rpc.Service;
3 import javax.xml.rpc.ServiceFactory;
4 import java.net.URL;
5 import javax.xml.namespace.QName;
6
7 public class TestHelloClient
8 {
9 public static void main(String[] args)
10 {
11 try
12 {
13 String wsdlUrl =
14 "http://localhost:8080/Axis/HelloClient.jws?wsdl";
15 String nameSpaceUri =
16 "http://localhost:8080/Axis/HelloClient.jws";
17 String serviceName = "HelloClientService";
18 String portName = "HelloClient";
19
20 ServiceFactory serviceFactory =
21 ServiceFactory.newInstance();
22 Service afService =
23 serviceFactory.createService(new URL(wsdlUrl),
24 new QName(nameSpaceUri, serviceName));
25 HelloClientInterface proxy = (HelloClientInterface)
26 afService.getPort(new QName(
27 nameSpaceUri, portName),
28 HelloClientInterface.class);
29 System.out.println
30 ("return value is "+proxy.getName("john") ) ;
31 }catch(Exception ex)
32 {
33 ex.printStackTrace() ;
34 }
35 }
36 }
(3)、Dynamic Proxy方式
(我比较喜欢用这种方式。)
1. 服务端同样使用一样的测试代码,不过打包成jar,然后放在axis目录web-inf/lib下。
2. 编写server-config.wsdd 放在axis web-inf下。
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1
2 <?xml version="1.0" encoding="UTF-8"?>
3 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
4 <globalConfiguration>
5 <parameter name="adminPassword" value="admin"/>
6 <parameter name="enableNamespacePrefixOptimization" value="true"/>
7 <parameter name="disablePrettyXML" value="true"/>
8 <parameter name="sendXsiTypes" value="true"/>
9 <parameter name="sendMultiRefs" value="true"/>
10 <parameter name="sendXMLDeclaration" value="true"/>
11 <requestFlow name="RequestFlow1">
12 <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">
13 <parameter name="scope" value="application"/>
14 </handler>
15 <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">
16 <parameter name="scope" value="request"/>
17 <parameter name="extension" value=".jwr"/>
18 </handler>
19 </requestFlow>
20 </globalConfiguration>
21 <responseFlow name="ResponseFlow1">
22 <handler name="Handler1" type="LocalResponder"/>
23 </responseFlow>
24 <handler name="Handler1" type="LocalResponder"/>
25 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
26 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
27 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
28 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
29 <requestFlow name="RequestFlow1">
30 <handler name="Handler1" type="URLMapper"/>
31 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
32 </requestFlow>
33
34 <service name="TESTWS" style="wrapped">
35 <parameter name="allowedMethods" value="*"/>
36 <parameter name="scope" value="Application"/>
37 <parameter name="className" value="HelloClient"/>
38 </service>
39
40 <transport name="http">
41 <requestFlow name="RequestFlow1">
42 <handler name="Handler1" type="URLMapper"/>
43 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
44 </requestFlow>
45 </transport>
46 <transport name="local">
47 <responseFlow name="ResponseFlow1">
48 <handler name="Handler1" type="LocalResponder"/>
49 </responseFlow>
50 </transport>
51 </deployment>
2 <?xml version="1.0" encoding="UTF-8"?>
3 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
4 <globalConfiguration>
5 <parameter name="adminPassword" value="admin"/>
6 <parameter name="enableNamespacePrefixOptimization" value="true"/>
7 <parameter name="disablePrettyXML" value="true"/>
8 <parameter name="sendXsiTypes" value="true"/>
9 <parameter name="sendMultiRefs" value="true"/>
10 <parameter name="sendXMLDeclaration" value="true"/>
11 <requestFlow name="RequestFlow1">
12 <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">
13 <parameter name="scope" value="application"/>
14 </handler>
15 <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">
16 <parameter name="scope" value="request"/>
17 <parameter name="extension" value=".jwr"/>
18 </handler>
19 </requestFlow>
20 </globalConfiguration>
21 <responseFlow name="ResponseFlow1">
22 <handler name="Handler1" type="LocalResponder"/>
23 </responseFlow>
24 <handler name="Handler1" type="LocalResponder"/>
25 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
26 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
27 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
28 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
29 <requestFlow name="RequestFlow1">
30 <handler name="Handler1" type="URLMapper"/>
31 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
32 </requestFlow>
33
34 <service name="TESTWS" style="wrapped">
35 <parameter name="allowedMethods" value="*"/>
36 <parameter name="scope" value="Application"/>
37 <parameter name="className" value="HelloClient"/>
38 </service>
39
40 <transport name="http">
41 <requestFlow name="RequestFlow1">
42 <handler name="Handler1" type="URLMapper"/>
43 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
44 </requestFlow>
45 </transport>
46 <transport name="local">
47 <responseFlow name="ResponseFlow1">
48 <handler name="Handler1" type="LocalResponder"/>
49 </responseFlow>
50 </transport>
51 </deployment>
测试程序仍然可以是DII方式中的测试程序。
不过附带vbs脚本测试:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1
2 Set SOAPClient = CreateObject("MSSOAP.SOAPClient30")
3 SOAPClient.MSSOAPInit("http://127.0.0.1:8080/axis/services/TESTWS?wsdl")
4 WScript.Echo SOAPClient.getName("devTest")
5
2 Set SOAPClient = CreateObject("MSSOAP.SOAPClient30")
3 SOAPClient.MSSOAPInit("http://127.0.0.1:8080/axis/services/TESTWS?wsdl")
4 WScript.Echo SOAPClient.getName("devTest")
5
再附带一个asp连接程序:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1 Set SOAPClient = server.CreateObject("MSSOAP.SOAPClient30")
2 SOAPClient.ClientProperty("ServerHTTPRequest") = True
3 SOAPClient.MSSOAPInit("http://127.0.0.1:8080/axis/services/TESTWS?wsdl")
4 Dim wsrequest=SOAPClient.getName("zhangsan")
2 SOAPClient.ClientProperty("ServerHTTPRequest") = True
3 SOAPClient.MSSOAPInit("http://127.0.0.1:8080/axis/services/TESTWS?wsdl")
4 Dim wsrequest=SOAPClient.getName("zhangsan")
不过注意,vb 和asp连接应该装 soapsdk.exe 和msxmlchs.msi软件。
发表评论
-
详细总结LOG4J的使用
2007-02-06 16:31 7121 import java.util.*; 2 impor ... -
数字签名
2007-02-06 16:39 773使用applet经常涉及到java的砂箱问题,由于java的安 ... -
常见排序算法
2007-02-06 16:48 839<!--<br><br> ... -
测试连接数据源
2007-02-06 17:07 8091 ////////////////////////// ... -
解析XML
2007-02-06 17:12 6511 2 package com.parsexml ; ... -
BASE64编码
2007-02-06 17:16 7631 ////////////////////////// ... -
MD5加密
2007-02-07 09:49 934<!--<br><br>Cod ... -
省市地区三级菜单
2007-02-07 09:58 1218级联菜单:(1.js文件)<!--<br>& ... -
解析XML字符串与xml文件
2007-02-07 10:53 956对两种情况,这个文件不需要修改:<!--<br&g ... -
Applet 与JS通信
2007-02-08 16:09 4874Applet 与JS通信:一、页面嵌入applet:<a ... -
正则表达式使用详解
2007-02-14 10:54 769如果我们问那些UNIX系 ... -
xml学习总结之一
2007-02-15 13:16 7391 . XML 与 DTD —— XML 入门知识 1 ... -
xml学习总结之二
2007-02-26 10:49 6622. XML 名称空间 XML 命 ... -
JAVA 写的一截屏小工具
2007-03-01 09:48 711该截图工具的原代码参照了网上一文:(http://www.ch ... -
记事本程序
2007-03-08 12:09 696写了一个记事本程序,程序运行效果如下。 ... -
servlet学习笔记之一
2007-03-09 10:48 614servlet 学习笔记 自序 昨天心情有些失落。公司从去 ... -
servlet学习笔记之二
2007-03-26 19:16 564servlet 学习笔记之二 — ... -
servlet学习笔记之三
2007-03-26 19:25 587servlet 学习笔记之三 ——关于 web 应用程序的部 ... -
JFreeChart 入门指南
2007-04-18 01:47 795JFreeChart也许对大家来说很陌生,JFreeCh ... -
创意柱状图
2007-04-20 23:39 695本来页面上是用jfreechart 绘制的数据分析 ...
相关推荐
**WebService和Ajax总结** 在IT领域,WebService和Ajax是两种重要的技术,它们分别在Web应用程序的交互和用户体验提升上发挥了重要作用。本篇文章将全面探讨这两种技术的原理、应用及其在.NET环境下的实现。 **一...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
总结,使用JDK发布Web服务涉及的主要知识点包括:JAX-WS API、SEI、WSDL、HTTP服务器以及客户端调用。通过这些知识点,开发者可以在Java环境中方便地创建、部署和测试Web服务,实现不同系统的互联互通。
这个压缩包"个人总结的webservice jar包"包含了实现Web服务所需的一些关键库文件,对于理解和开发Java Web服务至关重要。 首先,我们需要了解Java中的WebService是如何工作的。在Java中,我们通常使用JAX-WS(Java ...
总结,使用JDK开发WebService涉及的关键点包括:理解SOAP、WSDL和UDDI等协议,使用JAX-WS提供的注解和工具,以及如何在客户端和服务器端交互。通过这个过程,开发者可以构建起跨平台、跨语言的网络通信系统,极大地...
CXF 实现WebService常用注解总结 CXF 实现WebService时,使用注解来指定与WebService相关的元数据,简化WebService的开发。下面总结了CXF实现WebService常用注解。 @WebService注解 @WebService注解标记Java类,...
以下是对这个实例的详细解析和相关知识点的总结: 1. JavaScript调用机制: JavaScript通过XMLHttpRequest对象或者ActiveXObject(在旧版IE浏览器中)来实现对WebService的调用。在示例中,使用了ActiveXObject,这...
Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web 服务 API 使用 JDK Web 服务 API 可以实现...
总结,本教程详细介绍了如何利用Spring Boot和Apache CXF搭建Web Service服务端,以及使用JAX-WS的`javax.xml.ws.Service`和Apache CXF的`JaxWsProxyFactoryBean`两种方式实现Java客户端调用。这些技能对于开发者来...
### 详解Hibernate与WebService结合使用的知识点 #### 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它提供了强大的数据持久化机制。通过使用Hibernate,开发人员可以将面向对象模型映射到...
总结,使用RAD开发WebService是一个相对直观且高效的过程。从准备工具,创建项目,编写Java Bean,生成WebService,到最后的验证和测试,每一步都清晰明了。而在进行版本升级时,需要注意兼容性和配置问题,确保项目...
【WebService与SQL的结合使用】...总结,WebService与SQL的结合使用,实现了跨越网络的数据访问和处理,增强了系统的互操作性和可扩展性。了解并掌握这两者如何协同工作,对于开发分布式系统和构建企业级应用至关重要。
本文将对Web服务的使用进行详细总结,涵盖了基础概念、技术栈、实现过程以及常见问题。 一、Web服务基础 1.1 WebService定义:WebService是一种通过XML(可扩展标记语言)进行通信的网络应用,它可以提供和消费API...
用delphi调用dotnet开发的webservice经验总结,包含汉字乱码,soapheader安全验证的问题。
Web服务(WebService)是一种基于网络的、分布式的模块化组件,它使用标准的XML(可扩展标记语言)来封装数据,使得不同的应用系统之间能够互相通信。在本场景中,我们将探讨如何通过WebService来调用数据库中的数据...
总结起来,这个示例展示了如何使用 jQuery 的 AJAX 功能与 WebService 进行通信,无论是无参数还是带参数的调用,以及如何处理返回的数据。理解这些概念对于构建基于 JavaScript 的前端应用程序并与后端服务进行交互...
- **服务描述**:通常使用 WSDL (Web Services Description Language) 来描述 WebService 的接口,包括可用的方法、参数类型等信息。 - **服务发布**:服务提供者需要通过某种机制(如 UDDI)来发布 WebService 的...
delphi开发webservice经验总结