- 浏览: 5177048 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
看了网上的很多java+axis的Hello World程序,几乎(注意是几乎)千篇一律一个超级简单的服务:输入String,输出String,实践指导性不太强。经过几天的研究,我来总结总结写一篇超级Hello World,希望对Web Service的初学者(具备Web Service基本常识)有所帮助。
本文没有系统地涉及的搭建环境的细节,只是多种接口情况(String等简单对像、自定义对象、数组做参数,返回对象、数组、多返回值,以及数据库连接池的使用)的服务编写及调用方法示例程序。
本人原创,转载请保留本人信息。时间:2011-09-20 作者:隔壁老王 地址:http://wallimn.iteye.com/blog/1176153
一、服务类:
二、调用示例
三、其它辅助的东东[b][/b]
部署文件 (deploy.wsdd):
部署脚本(deploy.bat):
java -Djava.ext.dirs=../lib org.apache.axis.client.AdminClient -lhttp://localhost:8181/TEST/services/AdminService deploy.wsdd
pause
获取数据库连接的类(使用了proxool连接池):
本文没有系统地涉及的搭建环境的细节,只是多种接口情况(String等简单对像、自定义对象、数组做参数,返回对象、数组、多返回值,以及数据库连接池的使用)的服务编写及调用方法示例程序。
本人原创,转载请保留本人信息。时间:2011-09-20 作者:隔壁老王 地址:http://wallimn.iteye.com/blog/1176153
一、服务类:
package com.wallimn.services.example; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.xml.rpc.holders.StringHolder; import com.wallimn.services.util.ConnManager; public class HelloWorldService { /** * 无输入参数,只有返回值 * <br/> * 作者:wallimn 时间:2011-9-20 下午04:21:32<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @return */ public String sayHello() { return "hello"; } /** * 有输入参数,有返回值 * <br/> * 作者:wallimn 时间:2011-9-20 下午04:21:48<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @param name * @return */ public String sayHelloToPerson(String name) { if (name == null || "".equals(name)) { name = "nobody"; } return "Hello " + name; } /** * 返回String数组的示例 * <br/> * 作者:wallimn 时间:2011-9-20 下午04:22:05<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @return */ public String[] saySimpleArray() { return new String[] { "one", "two", "three" }; } /** * 返回自定义的对象数组 * <br/> * 作者:wallimn 时间:2011-9-20 下午04:22:23<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @return */ public Order[] sayObjectArray() { return new Order[] { new Order("隔壁老王"), new Order("wallimn"), new Order("wallimn@sohu.com"), new Order("http://wallimn.iteye.com") }; } /** * 自定义对象数组做参数 * <br/> * 作者:wallimn 时间:2011-9-20 下午04:22:50<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @param order * @return */ public String processOrder(Order order) { String sep = System.getProperty("line.separator"); String response = "Hi, " + order.getCustomerName() + "!" + sep; response += sep + "You seem to have ordered the following:" + sep; String[] items = order.getItemCodes(); int[] quantities = order.getQuantities(); for (int i = 0; i < items.length; i++) { response += sep + quantities[i] + " of item : " + items[i]; } response += sep + sep + "If this had been a real order processing system, " + "we'd probably have charged you about now."; return response; } /** * 执行数据库查询的服务。使用proxool连接池 * <br/> * 作者:wallimn 时间:2011-9-20 下午04:23:09<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @return */ public String getNameFromDb() { System.out.println("执行方法,准备获取数据库连接"); Connection conn = ConnManager.getInstance().getConnection(); System.out.println("获取数据库连接:" + conn); String sql = "select 'wallimn' name from dual"; try { PreparedStatement stat = conn.prepareStatement(sql); System.out.println("执行查询!"); ResultSet rs = stat.executeQuery(); rs.next(); String name = rs.getString(1); rs.close(); stat.close(); return name; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return "notfound"; } /** * 返回多个值的示例,函数有返回值、有输出参数 * <br/> * 作者:wallimn 时间:2011-9-20 下午03:46:01<br/> * 邮件:wallimn@sohu.com<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * @param id * @param name 输出参数,注意,使用的是StringHolder,这类类型wsdl中,自动变成输出参数 * @return */ public String getNameById(int id,StringHolder name){ if(id==0){ name.value="wallimn"; } else if(id==1){ name.value="his wife"; } else if (id==2){ name.value = "his son"; } else{ name.value="let me think about"; } return "ok"; } }
二、调用示例
package com.wallimn.services.example; import java.io.IOException; import java.net.MalformedURLException; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceException; import junit.framework.TestCase; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 服务测试类 * <br/> * 编码:wallimn 时间:2011-9-20 下午04:37:38<br/> * 版本:V1.0<br/> */ public class TestHelloWorldService extends TestCase{ private static final Log log = LogFactory.getLog(TestHelloWorldService.class); //这两个值的IP、端口、ContextPath根据实际情况进行修改 private static final String HELLO_SERVICE_ENDPOINT = "http://127.0.0.1:8181/TEST/services/HelloServices?wsdl"; private static final String namespaceURI = "http://127.0.0.1:8181/TEST/services/HelloServices"; public void testSayHello() { try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL( HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName(namespaceURI, "sayHello")); call.setReturnType(org.apache.axis.Constants.XSD_STRING); try { String ret = (String) call.invoke(new Object[] {}); System.out.println("The return value is:" + ret); return; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } log.error("call sayHello service error!"); } public void testSayHelloToPerson() { try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL( HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName(namespaceURI,"sayHelloToPerson")); call.addParameter("name", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN); call.setReturnType(org.apache.axis.Constants.XSD_STRING); try { String ret = (String) call.invoke(new Object[] { "Stephen" }); System.out.println("The return value is:" + ret); return; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } log.error("call callSayHelloToPerson service error!"); } public void testGetNameFromDb() { try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL( HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName(namespaceURI, "getNameFromDb")); //测试数据库查询服务,使用下面的代码 // call.setOperationName(new QName(namespaceURI, // "getNameFromDb")); call.setReturnType(org.apache.axis.Constants.XSD_STRING); try { String ret = (String) call.invoke(new Object[] {}); System.out.println("The return value is:" + ret); return; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } log.error("call callGetNameFromDb service error!"); } public void testSaySimpleArray() { try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL( HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName(namespaceURI, "saySimpleArray")); call.setReturnType(new QName(namespaceURI, "saySimpleArrayResponse"), String[].class); try { String[] ret = (String[]) call.invoke(new Object[] {}); System.out.println("返回数组示例:"); for(int i=0; i<ret.length; i++){ System.out.println(ret[i]); } return; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } log.error("call callSayArray service error!"); } public void testSayObjectArray() { try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL( HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName(namespaceURI, "sayObjectArray")); QName qn = new QName("urn:BeanService", "Order"); call.registerTypeMapping(Order.class, qn, new org.apache.axis.encoding.ser.BeanSerializerFactory( Order.class, qn), new org.apache.axis.encoding.ser.BeanDeserializerFactory( Order.class, qn)); call.setReturnType(new QName(namespaceURI, "sayObjectArrayResponse"), Order[].class); try { Order[] ret = (Order[]) call.invoke(new Object[] {}); System.out.println("返回数组示例:"); for(int i=0; i<ret.length; i++){ System.out.println(ret[i].getCustomerName()); } return; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } log.error("call callObjectArray service error!"); } public void testShowOrder() { Order order = new Order(); order.setCustomerName("http://wallimn.iteye.com"); order.setShippingAddress("275 Grove Street, Newton, MA"); String[] items = new String[] { "mp3jukebox", "1600mahBattery" }; int[] quantities = new int[] { 1, 4 }; order.setItemCodes(items); order.setQuantities(quantities); String result; try { Service service = new Service(); Call call = (Call) service.createCall(); QName qn = new QName("urn:BeanService", "Order"); call.registerTypeMapping(Order.class, qn, new org.apache.axis.encoding.ser.BeanSerializerFactory( Order.class, qn), new org.apache.axis.encoding.ser.BeanDeserializerFactory( Order.class, qn)); call.setTargetEndpointAddress(new java.net.URL(HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName("OrderProcessor", "processOrder")); call.addParameter("arg1", qn, ParameterMode.IN); call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); result = (String) call.invoke(new Object[] { order }); } catch (Exception fault) { result = "Error : " + fault.toString(); } System.out.println(result); } public void testGetNameById(){ try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(HELLO_SERVICE_ENDPOINT)); call.setOperationName(new QName(namespaceURI,"getNameById")); QName qnName = new QName("name"); call.addParameter("id", org.apache.axis.Constants.XSD_INTEGER, ParameterMode.IN); //call.addParameter("name", org.apache.axis.Constants.XSD_STRING, ParameterMode.OUT); call.addParameter(qnName, org.apache.axis.Constants.XSD_STRING, ParameterMode.OUT); call.setReturnType(org.apache.axis.Constants.XSD_STRING); try { String ret = (String) call.invoke(new Object[] { 1 }); call.getOutputParams().get("name"); System.out.println("The return value is:" + ret); //call.getOutputParams()返回的Map中的key为QName,debug一下才发现。 System.out.println("The person is "+call.getOutputParams().get(qnName)); return; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } log.error("call callSayHelloToPerson service error!"); } }
三、其它辅助的东东[b][/b]
package com.wallimn.services.example; public class Order { /** Who's ordering */ private String customerName; /** Where do they live */ private String shippingAddress; /** Which items do we want */ private String itemCodes[]; /** And how many */ private int quantities[]; // Bean accessors public Order(String name){ this.customerName = name; } public Order(){ } public String getCustomerName() { return customerName; } public void setCustomerName(String name) { customerName = name; } public String getShippingAddress() { return shippingAddress; } public void setShippingAddress(String address) { shippingAddress = address; } public String [] getItemCodes() { return itemCodes; } public void setItemCodes(String [] items) { itemCodes = items; } public int [] getQuantities() { return quantities; } public void setQuantities(int [] quants) { quantities = quants; } }
部署文件 (deploy.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"> <service name="HelloServices" provider="java:RPC"> <parameter name="className" value="com.wallimn.services.example.HelloWorldService"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:Order" xmlns:myNS="urn:BeanService" languageSpecificType="java:com.wallimn.services.example.Order"/> </service> </deployment>
部署脚本(deploy.bat):
java -Djava.ext.dirs=../lib org.apache.axis.client.AdminClient -lhttp://localhost:8181/TEST/services/AdminService deploy.wsdd
pause
获取数据库连接的类(使用了proxool连接池):
package com.wallimn.services.util; import java.sql.Connection; import java.sql.DriverManager; import org.logicalcobwebs.proxool.ProxoolException; import org.logicalcobwebs.proxool.configuration.PropertyConfigurator; public class ConnManager { static String CLASS_ROOT = null; static{ CLASS_ROOT = ConnManager.class.getResource("/").getPath(); try { // Java应用中先要加载配置文件,否则谁知道你配置给谁用的 PropertyConfigurator.configure(CLASS_ROOT+ "proxool.properties"); } catch (ProxoolException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Connection getConnection() { try { // 1:注册驱动类,这次这个驱动已经不是Oracle的驱动了,是Proxool专用的驱动 Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); // 2:创建数据库连接,这个参数是一个字符串,是数据源的别名,在配置文件中配置的timalias,参数格式为:proxool.数据源的别名 Connection conn = DriverManager.getConnection("proxool.proxool-pool"); return conn; } catch (Exception e) { e.printStackTrace(); } return null; } private static ConnManager instance = null; public static ConnManager getInstance() { if (instance == null) instance = new ConnManager(); return instance; } }
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18650编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2480部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3473两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 18351.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7690一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1281我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3271做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1179写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3999大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2392一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7539我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2771@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2093转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3086用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1769element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9801示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6653申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5341最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5297springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10431微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
在本教程中,我们将探讨“webservice复习-helloworld”这个主题,它是一个基础的Web服务示例,帮助开发者理解和掌握Web服务的基本概念和实现。 首先,Web服务的核心标准是SOAP(Simple Object Access Protocol),...
axisServer.deploy("HelloWorld", "/WEB-INF/classes/HelloWorld.class"); } } ``` 3. 在`web.xml`中配置Servlet,并设置映射路径。 4. 将项目部署到Tomcat服务器。 步骤四:测试Web Service 1. 访问浏览器中...
NULL 博文链接:https://newleague.iteye.com/blog/815158
本教程将详细讲解如何在Visual Studio 2010(VS2010)中创建一个简单的“HelloWorld”WebService。这个过程是开发者入门.NET WebService开发的基本步骤。 首先,启动Visual Studio 2010并创建一个新的项目。选择...
【标题】"Websphere HelloWorld WebService"是一个基础教程,主要展示了如何在IBM Websphere应用服务器上创建和部署一个简单的Web服务以及对应的客户端。这个教程对于初学者来说,是理解Web服务工作原理和Websphere...
### 使用CXF发布和调用WebService之HelloWorld入门详解 #### 一、概述 本文将详细介绍如何使用Apache CXF框架来实现一个简单的WebService——HelloWorld示例。此示例不仅适用于初学者理解WebService的基本概念,...
"HelloWorld WebService Server" 是一个入门级的示例,旨在帮助初学者理解Web服务的工作原理,特别是服务器端的部分。在这个项目中,我们将深入探讨Web服务的概念、工作流程以及如何创建一个简单的 HelloWorld ...
【HelloWorld WebService Client】是入门级的示例项目,主要展示了如何创建并使用一个简单的Web服务客户端。在Web服务的世界里,客户端是能够与服务器交互、调用服务功能的应用程序。这个项目的核心目标就是教导...
webservice-helloworld 视频 两台机器访问,一个是虚拟机。
webservice-helloworld 视频 两台机器访问,一个是虚拟机。 高清
在这个“基于wsdl进行webservice接口开发打印helloworld”的案例中,我们将深入理解WSDL在Web Service接口开发中的作用,并了解如何通过它来实现简单的服务调用。 首先,我们需要理解WSDL文档的基本结构。WSDL文档...
标题中的“xfire-HelloWorld.rar_webservice_webservice FPGA_xfire hellowor”提到了几个关键元素:xfire、webservice、FPGA以及一个简单的示例应用“HelloWorld”。这表明我们将探讨的是如何使用xfire这个框架来...
标题 "我的webservice Hello world-axis" 指的是一个基于Apache Axis实现的Web服务示例,主要用于初学者学习和理解Web服务的基本概念。Apache Axis是一个开源的SOAP(简单对象访问协议)工具包,用于创建和部署Web...
【WebService版集成Spring的HelloWorld】是一个典型的教程,旨在帮助开发者了解如何在Spring框架中集成和使用WebService技术。在这个教程中,我们将深入探讨以下几个关键知识点: 1. **WebService概述**: ...
**WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行互操作。本篇将详细介绍如何使用Apache CXF框架来创建...
CXF webservice 入门视频 很清晰很不错,企业当中很多都在使用CXF
首先,需要创建一个 Java 类,例如 `HelloWorld`,然后使用 `@WebService` 注解标注该类,以便将其暴露为 WebService。 ```java import javax.jws.WebService; @WebService public class HelloWorld { public ...