Java6 WebService客户端封装

简介:
在开发WebService客户端应用的时候,面临的最大挑战是事先不知道服务端要部署在哪里,端口是什么,因此Hello World的例子并不适合生产环境,还需要进一步的做改进。
 
改进的总体思想是将静态的部分替换为动态的,也就是说,将服务的ip和端口,做成动态参数,然后根据服务端的部署灵活改变这些配置参数。
 
下面针对前面的例子对客户端做一个改进。
 
1、写WebService服务的配置参数文件
 
wscfg.properties
#Java6WS服务的配置 
Java6WS.wsip=192.168.14.117 
Java6WS.wsport=8888
 
2、写配置参数获取工具
 
SysParamsToolkit.java
package lavasoft.common; 

import java.io.IOException; 
import java.util.Properties; 

/** 
* 媒资系统配置文件参数获取工具 

* @author leizhimin 2009-11-16 15:21:22 
*/
 

public  final  class SysParamsToolkit { 
         private  static Properties prop; 

         private SysParamsToolkit() { 
        } 

         static { 
                reload(); 
        } 

         public  static  boolean reload() { 
                 boolean flag =  true
                prop =  new Properties(); 
                 try { 
                        prop.load(SysParamsToolkit. class.getResourceAsStream( "/wscfg.properties")); 
                        flag =  false
                }  catch (IOException e) { 
                        e.printStackTrace(); 
                } 
                 return flag; 
        } 

         public  static Properties getSysProperties() { 
                 return prop; 
        } 

         /** 
         * 获取指定的系统属性值 
         * 
         * @param key 指定的属性名称 
         * @return 指定的系统属性值 
         */
 
         public  static String getProperty(String key) { 
                 return prop.getProperty(key); 
        } 

         /** 
         * 获取指定的系统属性值 
         * 
         * @param key                指定的属性名称 
         * @param defaultVal 默认值 
         * @return 指定的系统属性值 
         */
 
         public  static String getProperty(String key, String defaultVal) { 
                 return prop.getProperty(key, defaultVal); 
        } 

         public  static  void main(String[] args) { 
                Properties prop = getSysProperties(); 
        } 
}
 
3、修改Java6工具生成的代码,改静态的IP和端口为动态的参数。
 
这一步是最关键的一步,前面的都是准备工作,这一步才是实质性的工作,首先你要找到所生成客户端代码的服务接口实现类,在此是Java6WSService类。
@WebServiceClient(name =  "Java6WSService", targetNamespace =  "http://server.lavasoft/", wsdlLocation = "http://192.168.14.117:8080/java6ws/Java6WS?wsdl") 
public class Java6WSService 
                extends Service { 
        private final static URL JAVA6WSSERVICE_WSDL_LOCATION; 
        private final static Logger logger = Logger.getLogger(lavasoft.wsclient.Java6WSService.class.getName()); 

        static { 
                String wsip = SysParamsToolkit.getProperty("wsip""192.168.14.117"); 
                String wsport = SysParamsToolkit.getProperty("wsport""8888"); 
                URL url = null
                try { 
                        URL baseUrl; 
                        baseUrl = lavasoft.wsclient.Java6WSService.class.getResource("."); 
                        url = new URL(baseUrl, "http://" + wsip + ":" + wsport + "/java6ws/Java6WS?wsdl"); 
                } catch (MalformedURLException e) { 
                        logger.warning("Failed to create URL for the wsdl Location: '"+"http://" + wsip + ":" + wsport + "/java6ws/Java6WS?wsdl"+"', retrying as a local file"); 
                        logger.warning(e.getMessage()); 
                } 
                JAVA6WSSERVICE_WSDL_LOCATION = url; 
        } 

......
 
到此,大功告成了,你的客户端代码具有了可配置功能了。可以不再担心服务端如何部署了。
 
运行一把看看:
 
由于客户端生成的代码超多,不能一一贴出,也没必要,详细源码请查看附件。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/228026,如需转载请自行联系原作者
相关文章
|
3月前
|
安全 Java 编译器
Java的封装详解
封装和多态是面向对象编程(OOP)的重要概念。封装通过私有属性和公共方法实现数据隐藏和保护,使类的内部细节对外部不可见;多态则通过方法重载和重写实现同一方法在不同对象上的不同表现形式,增强了代码的灵活性和可维护性。两者结合使用,可以使Java程序更加安全、灵活且易于维护。
255 82
|
3月前
|
Java
Java的封装详解
封装是Java中实现数据隐藏和保护的核心机制。它通过将对象的状态和行为结合并限制外部直接访问,确保类的内部细节对外不可见,仅能通过公共方法访问和修改对象状态。封装带来了数据隐藏、提高代码可维护性和增强安全性等好处。在Java中,封装主要通过将属性设为私有并提供getter和setter方法来实现。这种方式不仅保护了数据完整性,还允许在修改类内部实现时不影响外部代码,从而提升程序的健壮性和可读性。
307 80
|
1月前
|
XML Java Maven
WebService客户端调用的5种常见方式
本文介绍了在Java中创建和调用WebService的方法,包括服务端的搭建、配置类的添加以及客户端的多种调用方式(如使用JDK原生代码、wsimport命令、动态调用、代理工厂及HttpClient)。文中详细展示了每种方法的实现步骤和示例代码,强调了服务端与客户端参数实体类字段的兼容性,并推荐使用代理工厂方式进行调用。
101 0
WebService客户端调用的5种常见方式
|
1月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
71 4
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
JSON NoSQL Java
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
这篇文章介绍了在Java中使用Redis客户端的几种方法,包括Jedis、SpringDataRedis和SpringBoot整合Redis的操作。文章详细解释了Jedis的基本使用步骤,Jedis连接池的创建和使用,以及在SpringBoot项目中如何配置和使用RedisTemplate和StringRedisTemplate。此外,还探讨了RedisTemplate序列化的两种实践方案,包括默认的JDK序列化和自定义的JSON序列化,以及StringRedisTemplate的使用,它要求键和值都必须是String类型。
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
|
3月前
|
SQL Java 编译器
Java——类与对象(封装)
封装是面向对象编程中的概念,指将数据(属性)和相关操作(方法)组合成独立单元(类),使外部无法直接访问对象的内部状态,只能通过提供的方法进行交互,从而保护数据安全。例如,手机将各种组件封装起来,只暴露必要的接口供外部使用。实现封装时,使用`private`关键字修饰成员变量,并提供`get`和`set`方法进行访问和修改。此外,介绍了包的概念、导入包的方式及其注意事项,以及`static`关键字的使用,包括静态变量和方法的初始化与代码块的加载顺序。
57 10
Java——类与对象(封装)
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
72 1
|
3月前
|
安全 Java 数据安全/隐私保护
Java 封装怎么理解
封装是Java中的一种重要机制,它将对象的状态(数据)和行为(方法)打包在一起并控制外部访问权限,以保护数据不被随意修改。封装的主要目的包括数据保护、接口设计和增强模块性。通过使用`private`、`protected`及`public`等访问控制修饰符,结合getter和setter方法,可以有效隐藏对象内部实现细节。下面是一个简单的`BankAccount`类示例,展示了如何通过封装保护类的内部状态,确保数据安全和一致性,简化类的使用。理解封装有助于编写高质量代码和设计优秀程序架构。
44 9
|
3月前
|
Java 数据安全/隐私保护
Java 封装详解
在 Java 中,封装是面向对象编程的关键特性,通过将对象的状态(数据)和行为(方法)结合并利用访问控制保护数据,防止外部随意访问和修改。主要特点包括访问控制(如 `private` 和 `protected`)、数据隐藏及方法暴露(如 getter 和 setter)。封装的优点在于保护数据、隐藏实现细节、易于维护以及提高代码可读性。下面是一个简单的 `Person` 类封装示例,展示了如何通过 getter 和 setter 控制对类内部状态的访问,并进行合法性检查。总结而言,封装有助于构建清晰、易用且可维护的代码结构,是编写高质量 Java 程序的重要原则。
60 7