- 浏览: 702073 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (239)
- 系统架构设计 (16)
- java collection framework (2)
- java分布式 (4)
- java多线程 (0)
- 故障处理及调优 (16)
- 软件开发过程及管理 (28)
- OS (5)
- 常用算法 (3)
- design pattern (8)
- transaction (7)
- java apps (48)
- corejava (7)
- java and DB (10)
- cache (0)
- webservice (14)
- web前端 (25)
- 报表 (4)
- 日志系统设计 (3)
- Oracle (4)
- mysql (11)
- xml (11)
- 数据源配置管理 (3)
- 企业数据存储 (4)
- php (2)
- 测试 (1)
最新评论
-
orangebook:
对于初学者来说,这样编写可能会误导,理解更烦锁。
观察者模式(发布-订阅) -
liudajiang:
呵呵 startThreads(rand ...
实践缩小Java synchronized 粒度 -
zengwenbo5566:
谢谢博主,学习了
解决getOutputStream() has already been called for this response -
u011335423:
大神厉害啊 可以了
解决getOutputStream() has already been called for this response -
xiang37:
...
解决getOutputStream() has already been called for this response
这个小工具特别适合对web服务相关知识了解较少,又急需上web服务的研发队伍使用,呵呵。
工具简单介绍:
1.整个过程由web程序驱动,程序由用户(程序员等)在IE端驱动。
2.目前底层基于axis的web服务引擎。
3.一键式操作。
用户点击确认按钮,web服务即可成功发布到指定的应用下。
原理上是可以发布到指定机器的指定的应用中。
不过还有很多细节需要完善,加油,呵呵!
下面是部分源代码,今天限于时间的原因,只能提供部分主要的代码。
限于代码中部分涉及商业机密,所以待逐步整理后,陆续将代码贴出来,直到最后提供完整的src的zip包和jar包。
package cn.webservice.autodeploy.service; import java.io.File; import org.apache.log4j.Logger; import cn.lottery.common.exception.BusinessException; import cn.webservice.autodeploy.util.AntUtil; import cn.webservice.autodeploy.util.FileUtil; import cn.webservice.autodeploy.WSDeployConsts; import cn.webservice.autodeploy.domain.DefaultAntBuildProperties; import cn.webservice.autodeploy.domain.IAntBuildProperties; import cn.webservice.autodeploy.dto.WSAutoDeployDTO; /** * web服务业务接口实现 * @author Administrator * */ public class WSAutoDeployServiceImpl implements IWSAutoDeployService{ protected static final Logger logger = Logger.getLogger("WSAutoDeployServiceImpl.class"); /** * 自动部署web服务 */ public void autoDeployWebservice(WSAutoDeployDTO wsDeployDTO) throws BusinessException { this.genAndCompileInterfaceSrc(wsDeployDTO); this.genJavaSrcWsAbout(wsDeployDTO); //this.handleInterfaceImplSrc(wsDeployDTO); } /** * 生成并编译接口源文件 */ protected void genAndCompileInterfaceSrc(WSAutoDeployDTO wsDeployDTO) throws BusinessException{ String interfacePkg = wsDeployDTO.getInterfacePkg().replace('.', File.separatorChar);//包路径 String filePath = WSDeployConsts.APP_CLASS_ROOT + interfacePkg + File.separator;//文件路径 logger.info("** interfacePkg = " + interfacePkg); logger.info("** filePath = " + filePath); FileUtil fileUtil = new FileUtil(); fileUtil.genDirectory(wsDeployDTO,filePath); fileUtil.genInterfaceFile(wsDeployDTO,interfacePkg,filePath); fileUtil.insertSrcToFile(wsDeployDTO,filePath); this.complieAndMovedSrc(wsDeployDTO,filePath); } /** * 生成web服务相关的源文件 */ protected void genJavaSrcWsAbout(WSAutoDeployDTO wsDeployDTO) throws BusinessException{ try{ AntUtil antUtil = new AntUtil(); antUtil.execAntTarget(WSDeployConsts.DEPLOY_WS); }catch(Exception e){ e.printStackTrace(); throw new BusinessException(e.getMessage()); } } /** * 插入接口实现代码 * @param wsDeployDTO */ protected void handleInterfaceImplSrc(WSAutoDeployDTO wsDeployDTO) throws BusinessException { } /** * 编译并移动接口文件src * @param filePath */ private void complieAndMovedSrc(WSAutoDeployDTO wsDeployDTO,String filePath) throws BusinessException{ IAntBuildProperties antBuildProperties = new DefaultAntBuildProperties(); antBuildProperties.modifyAntProps(wsDeployDTO); //修改build.properties AntUtil antUtil = new AntUtil(); //执行ant目标,编译interface antUtil.execAntTarget(WSDeployConsts.COMPILE_MOVED_INTERFACE_SRC); } }
package cn.webservice.autodeploy.util; import java.io.File; import org.apache.log4j.Logger; import org.apache.tools.ant.DefaultLogger; import org.apache.tools.ant.Project; import org.apache.tools.ant.ProjectHelper; import cn.lottery.common.exception.BusinessException; /** * ant公共类 * @author Administrator * */ public class AntUtil { protected static final Logger logger = Logger.getLogger("AntUtil.class"); /** * 执行ant target * @param antTarget */ public void execAntTarget(String antTarget) throws BusinessException{ logger.info("** start execAntTarget"); DefaultLogger consoleLogger = new DefaultLogger(); consoleLogger.setErrorPrintStream(System.err); consoleLogger.setOutputPrintStream(System.out); consoleLogger.setMessageOutputLevel(Project.MSG_INFO); File buildFile = new File("/.../WEB-INF/classes/build.xml"); Project p = new Project(); p.addBuildListener(consoleLogger); p.init(); ProjectHelper helper = ProjectHelper.getProjectHelper(); logger.info("** helper = " + helper); helper.parse(p, buildFile); p.executeTarget(antTarget); logger.info("** end execAntTarget"); } }
package cn.webservice.autodeploy; /** * 全局变量 * @author Administrator * */ public class WSDeployConsts { public static final String APP_CLASS_ROOT = "/.../WEB-INF/classes/"; //================================================================================== //目前提供的可以自定义的build.properties文件中的key public static final String INTERFACE_NAME = "interface.name";//尚未修改 public static final String INTERFACE_PKG = "interface.pkg"; public static final String INTERFACE_SRC_PATH = "interface.src.path";//尚未修改 public static final String ABSOLUTE_INTERFACE_PATH = "interface.absolute.path"; public static final String MOVED_INTERFACE_DIR = "moved.interface.dir"; public static final String APP_NAME = "app.home"; //应用主目录 public static final String WS_PORT = "webservice.port"; //web服务的端口key public static final String WSDL_FILE_NAME = "wsdl.filename"; //WSDL文件名称 public static final String SERVICE_NAME = "service.name"; //名字空间 public static final String MOVED_SRC_DIR = "moved.src.dir"; //生成的文件移动到一个指定的文件夹中 //ant目标名称 public static final String COMPILE_MOVED_INTERFACE_SRC = "compile-moved-interface-src"; public static final String DEPLOY_WS = "deploy-ws"; }
package cn.webservice.autodeploy.domain; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Properties; import org.apache.log4j.Logger; import cn.lottery.common.exception.BusinessException; import cn.webservice.autodeploy.WSDeployConsts; import cn.webservice.autodeploy.dto.WSAutoDeployDTO; /** * ant的build.properties接口default实现类 * @author Administrator * */ public class DefaultAntBuildProperties implements IAntBuildProperties{ protected static final Logger logger = Logger.getLogger("DefaultAntBuildProperties.class"); /** * 修改build.properties中的值 */ public void modifyAntProps(WSAutoDeployDTO wsDeployDTO) throws BusinessException{ logger.info("** start modifyAntProps"); String interfacePkgHttp = "/" + wsDeployDTO.getInterfacePkg().replace('.', File.separatorChar);//包路径 logger.info("** interfacePkgHttp = " + interfacePkgHttp); try{ //读数据 File buildFile = new File(WSDeployConsts.APP_CLASS_ROOT + "build.properties"); InputStream in = (InputStream) (new FileInputStream(buildFile)); System.out.println("** 输入流: " + in); Properties properties = new Properties(); properties.load(in); String interfaceName = properties.getProperty(WSDeployConsts.INTERFACE_NAME); String interfacePkg = properties.getProperty(WSDeployConsts.INTERFACE_PKG); String interfaceSrcPath = properties.getProperty(WSDeployConsts.INTERFACE_SRC_PATH); String appNameValue = properties.getProperty(WSDeployConsts.APP_NAME); String wsPortValue = properties.getProperty(WSDeployConsts.WS_PORT); String wsdlNameValue = properties.getProperty(WSDeployConsts.WSDL_FILE_NAME); String serviceNameValue = properties.getProperty(WSDeployConsts.SERVICE_NAME); String movedSrcToDirValue = properties.getProperty(WSDeployConsts.MOVED_SRC_DIR); System.out.println("** interfaceName = " + interfaceName); System.out.println("** interfacePkg = " + interfacePkg); System.out.println("** interfaceSrcPath = " + interfaceSrcPath); System.out.println("** appNameValue = " + appNameValue); System.out.println("** wsPortValue = " + wsPortValue); System.out.println("** wsdlNameValue = " + wsdlNameValue); System.out.println("** serviceNameValue = " + serviceNameValue); System.out.println("** movedSrcToDirValue = " + movedSrcToDirValue); if(appNameValue == null || wsPortValue == null || wsdlNameValue == null || serviceNameValue == null || movedSrcToDirValue == null){ throw new Exception("** ant属性文件缺少key值"); } logger.info("** wsDeployDTO = " + wsDeployDTO.toString()); //写入修改后的数据 Properties p = new Properties(); p.setProperty(WSDeployConsts.INTERFACE_NAME,wsDeployDTO.getInterfaceName()); p.setProperty(WSDeployConsts.INTERFACE_PKG,wsDeployDTO.getInterfacePkg()); p.setProperty(WSDeployConsts.INTERFACE_SRC_PATH,interfacePkgHttp);//将"."转换为"/" p.setProperty(WSDeployConsts.MOVED_INTERFACE_DIR,"/.../WEB-INF/wssrc/interface"); p.setProperty(WSDeployConsts.APP_NAME,wsDeployDTO.getAppPath()); p.setProperty(WSDeployConsts.WS_PORT,wsDeployDTO.getWsport()); p.setProperty(WSDeployConsts.WSDL_FILE_NAME,wsDeployDTO.getWsdlFileName()); p.setProperty(WSDeployConsts.SERVICE_NAME,wsDeployDTO.getServiceName()); p.setProperty(WSDeployConsts.MOVED_SRC_DIR,"/.../WEB-INF/wssrc"); FileOutputStream fos = new FileOutputStream(buildFile); p.store(fos,"end"); logger.info("** end modifyAntProps"); }catch(Exception e){ logger.error("修改ant属性文件: " + e.getMessage()); throw new BusinessException("修改ant属性文件失败"); } } }
发表评论
-
Tomcat6+axis1.4 Web服务发布及压力测试
2011-01-07 15:53 32821.环境配置 1.1安装jdk1.6.0 1.2安装tom ... -
web服务自动发布工具初步完成
2008-10-02 21:10 2228web服务自动发布工具简单介绍: 1.整个过程由web程序 ... -
想做个webservice自动部署工具,欢迎大家提点需求或意见
2008-09-24 16:14 2330最近遇到了一个实际的问题:怎样让一个不了解webservice ... -
使用axis开发webservice
2008-09-23 16:42 47401 介绍本文并不是想介绍Web服务的原理、系统架构等,我们假设 ... -
webservice开发和使用指南5
2008-09-22 17:18 181314.2 build.xml脚本代码 在这里增加了 ... -
webservice开发和使用指南4
2008-09-22 17:16 36793. 修改web.xml 加入如下代码<list ... -
Webservice开发和使用指南3
2008-09-22 17:14 23678.Axis集成Resin或其它应用服务器 8.1 ... -
Webservice开发和使用指南2
2008-09-22 17:13 43645.2 测试webservice接口工具 1. ... -
Webservice开发和使用指南1
2008-09-22 17:06 28181 .修改历史 Version Change ... -
webservice开源引擎的比较:Axis和CXF的比较
2008-09-22 15:09 5064在SOA领域,我们认为Web ... -
实战webservice安全策略
2008-07-09 12:51 8363前些日子公司的应用要 ... -
.net客户端调用java服务端,通讯数据加密解密思路及过程
2008-03-08 10:37 3997目前系统客户端用.net实现,java服务端采用了webser ... -
net的客户端调用java的web服务,服务端怎样保持session以及通讯的安全问题
2008-03-05 12:18 2236net的客户端调用java的web服务,在客户端怎样保持ses ...
相关推荐
【标题】"Axis发布Web服务教程源代码"指的是使用Apache Axis框架来创建并发布Web服务的教学资源,其中可能包含了详细的步骤、示例代码以及相关的配置文件。Apache Axis是开源的Java库,它允许开发者在Java平台上快速...
在本文中,我们将深入探讨如何使用C#语言和Web服务(WebService)来实现应用程序的自动升级功能。这个解决方案的关键在于模块化设计,确保更新过程独立于用户的应用程序,同时提供了下载进度显示,版本检测和自动...
这个工具的主要功能是根据定义的接口描述文件(如WSDL,Web Services Description Language),自动生成对应的Java源代码。WSDL文件是一种XML格式的文档,用于描述Web服务及其接口的细节,包括服务的位置、提供的...
"webservice 源代码 vb"的标题表明这是一个使用VB编写的Web服务的源代码示例,对于学习和理解如何在VB环境中构建Web服务具有很高的参考价值。 描述中提到“值得一看,值得研究,vb办,很有价值,建议收藏”,这暗示...
3. **WSDL生成器**:源代码可能包含自动生成WSDL文件的工具,这样服务提供者可以方便地暴露其接口信息。 4. **部署脚本和配置文件**:这些文件用于在服务器上部署和配置WebService,如web.xml或wsdd.xml。 5. **...
2. **jaxws-rt-2.1.7-sources.jar** - 这是`JAX-WS`运行时的源代码,包含了服务端和客户端实现,允许开发人员理解和调试`JAX-WS`的内部工作原理。 3. **jaxb-impl-2.1.8.jar** - `JAXB`的实现,用于将Java对象序列...
- Web服务的Java源代码或接口定义。 - 配置文件:如axis服务部署文件(.aar格式)或者服务相关的xml配置。 - Wsdl和Schema文件:定义服务接口和数据类型。 - 运行时依赖库:可能包括服务所需的相关jar包。 总结来说...
"xfireDemo1"可能包含了一个简单的XFire Web服务的源代码、配置文件和运行说明,供读者下载并跟随操作,以理解XFire的工作原理。 详细知识点: 1. **XFire介绍**:XFire是一个基于Java的轻量级Web服务框架,它支持...
4. **发布Web服务**:在Spring配置完成后,可以通过Spring启动CXF的Bus,使Web服务自动发布到指定的地址。这通常通过`<jaxws:endpoint>`标签的`address`属性完成。 5. **客户端调用**:在Spring环境中,也可以方便...
本教程将基于"Spring+CXF开发WebService源代码"的主题,深入探讨如何利用这两者创建和消费Web服务。 首先,Spring是一个开源的应用框架,提供了一个全面的编程和配置模型,适用于Java应用程序。它为开发企业级应用...
在实践中,你可能需要阅读和理解XFire的源代码,或者使用一些IDE插件(如Eclipse的CXF插件)来帮助你更好地集成和调试Web服务。 总之,XFire提供了一种简单的方法来构建和消费Web服务,特别适合初学者和小型项目。...
- 可能还包含示例的Java源代码和编译后的类文件,用于演示如何发布和调用Web服务。 要运行此项目,你需要将这些jar文件加入到项目的类路径中,然后按照上述步骤进行操作。如果遇到问题,可以根据描述中的提示寻求...
【通用自动更新程序及源代码】是一个基于VB.NET编写的软件更新系统,它利用了WEBSERVICE技术来实现远程数据交换和更新功能。这个系统设计的目的是为了简化应用程序的更新流程,确保用户能够轻松地获取并安装最新的...
- `src`目录包含源代码,通常分为`main/java`和`test/java`,分别存放源码和测试代码。 - `target`目录是Maven编译后的输出目录,包括编译后的类文件和打包的JAR/WAR文件。 5. **学习资源** - 项目中的详细注释...
标签中的“源码”指的是Web服务的Java源代码,而“工具”可能指的是用于开发、生成WSDL和测试服务的工具,例如Eclipse IDE、IntelliJ IDEA、wsimport命令行工具以及测试工具如SoapUI。 这个过程中,开发者需要熟悉...
ASP.NET WebService是微软开发的一种基于.NET Framework的Web服务技术,它允许开发者创建和消费SOAP(Simple Object Access Protocol)协议的Web服务。SoapUI是一款功能强大的SOAP和REST测试工具,可以方便地对Web...
它可以帮助你更好地理解和实践上述过程,通过查看源代码或执行示例,你可以更直观地了解PB11.5中创建和调用Web服务的具体操作。 总的来说,PB11.5提供了强大的Web服务支持,使得开发者能够轻松地在PowerBuilder应用...
3. **UDDI(Universal Description, Discovery, and Integration)**:UDDI是一种标准的目录服务,用于发布和查找Web服务。开发者可以通过UDDI注册他们的Web服务,以便其他开发者可以发现并使用。 4. **WS-* 标准**...
3. **发布服务**:使用 JAX-WS 提供的工具来发布服务。这通常涉及创建一个 Web 应用项目并在其中部署服务类。 4. **测试服务**:可以通过浏览器或工具直接访问服务端点 URL 来测试服务是否正常工作。URL 形式通常为...
AXIS发布WebService是一个在IT行业中常见的任务,尤其在企业级应用集成或Web服务开发中扮演着重要角色。AXIS是一个开放源码的Java库,它提供了用于创建、部署和使用Web服务的工具和API。本篇文章将深入探讨AXIS如何...