- 浏览: 458013 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
5.生成webservice服务端代码
在package explorer窗口中选择右键new--others--Axis2 Service Archiver
下一步,指定class文件的位置:
下一步,选择SKIP WSDL
http://dl.iteye.com/upload/attachment/270302/78b8d660-c5ee-388e-bdba-7748d7ea199f.jpg[/img]
下一步,默认跳过
指定services.xml文件路径:
指定输出aar包的位置:
如果弹出成功界面那么生成成功!
[img]http://dl.iteye.com/upload/attachment/270302/78b8d660-c5ee-388e-bdba-7748d7ea199f.jpg [/img]
6.发布webservice服务
将生成的 *.aar包拷贝到,%TOMCAT_HOME%\webapps\axis2\WEB-INF\services\下,启动tomcat即可
7.测试webservice服务
--------上传文件代码段------
------下载文件代码段-------
---------WS客户端核心代码封装----------------
在package explorer窗口中选择右键new--others--Axis2 Service Archiver
下一步,指定class文件的位置:
下一步,选择SKIP WSDL
http://dl.iteye.com/upload/attachment/270302/78b8d660-c5ee-388e-bdba-7748d7ea199f.jpg[/img]
下一步,默认跳过
指定services.xml文件路径:
指定输出aar包的位置:
如果弹出成功界面那么生成成功!
[img]http://dl.iteye.com/upload/attachment/270302/78b8d660-c5ee-388e-bdba-7748d7ea199f.jpg [/img]
6.发布webservice服务
将生成的 *.aar包拷贝到,%TOMCAT_HOME%\webapps\axis2\WEB-INF\services\下,启动tomcat即可
7.测试webservice服务
--------上传文件代码段------
//调用WebService服务上传待发信息的文件 if(SystemParameter.IsSendSMS){ IOUtil.appendStr2File(SystemParameter.smsSendDir +File.separator+ "sms_send_list_" + sendtime+ ".txt","EOF", true, IOUtils.LINE_SEPARATOR_WINDOWS); File uploadFile=new File(SystemParameter.smsSendDir +File.separator+ "sms_send_list_" + sendtime+ ".txt"); if(uploadFile.exists()){ boolean hasUpload= fileClient.upload("sms_send_list_" + sendtime,uploadFile, "txt"); if(hasUpload){ LOG.info("上传待发催报短信息文件:"+uploadFile.getName()+"成功!"); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } //删除已经上传的信息文件 boolean flag =delFile(uploadFile); if(flag){ LOG.info("删除待发催报短信息文件:"+uploadFile.getName()+"成功!"); } }else{ LOG.info("上传待发催报短信息文件:"+uploadFile.getName()+"失败!"); } } }
------下载文件代码段-------
package com.hollyinfo.invest.biz.message; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.RandomAccessFile; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.TimerTask; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.hollyinfo.SystemParameter; import com.hollyinfo.hiiap.common.logger.HollyinfoLog; import com.hollyinfo.hiiap.common.logger.HollyinfoLogger; import com.hollyinfo.invest.dao.message.MessageDao; import com.hollyinfo.invest.model.message.MessageReceiver; import com.hollyinfo.webservice.SMSFileTransClient; /** * 短信发送状态定时查询并更新该状态到系统 * @author wulihai * @date 2010-06-09 */ public class SMSQueryBizImpl extends TimerTask implements SMSQueryBiz { /** 日志初始化 */ private static HollyinfoLog LOG = HollyinfoLogger.getLog(MessageBizImpl.class); private SMSFileTransClient fileClient; public void setFileClient(SMSFileTransClient fileClient) { this.fileClient = fileClient; } /** 消息数据通道接口 */ private MessageDao messageDao; public void setMessageDao(MessageDao messageDao) { this.messageDao = messageDao; } public SMSQueryBizImpl() { } public void run() { try{ //查询待接收结果文件 List fileNames=fileClient.queryFileList(); for (Iterator iterator = fileNames.iterator(); iterator.hasNext();) { String fileName = (String) iterator.next(); int idx=fileName.indexOf("."); String preName=fileName.substring(0, idx); //下载结果文件 boolean flag=fileClient.download(preName, "txt"); if(flag){ LOG.info("下载结果文件"+fileName+","+flag); Thread.sleep(10000); boolean delflag=false; if(readLastLine(new File(SystemParameter.smsResultDir+File.separator+fileName),"utf-8").indexOf("EOF")!=-1){ //删除服务端已下载文件 delflag=fileClient.deleteFile(preName, "txt"); //更新发送结果到核心系统 updateSendResults(fileName); } //删除客户端已下载文件 delFile(new File(SystemParameter.smsResultDir+File.separator+fileName)); LOG.info("删除中间服务结果文件"+fileName+","+delflag); }else{ LOG.info("下载结果文件"+fileName+","+flag); } } //======检查是否还有没上传成功的文件,做重新上传操作=====// String [] filenames=new File(SystemParameter.smsSendDir).list(); for (int i = 0; i 0) { pos--; raf.seek(pos); if (raf.readByte() == '\n') { break; } } if (pos == 0) { raf.seek(0); } byte[] bytes = new byte[(int) (len - pos)]; raf.read(bytes); if (charset == null) { return new String(bytes); } else { return new String(bytes, charset); } } } catch (FileNotFoundException e) { } catch (IOException e) { e.printStackTrace(); } finally { if (raf != null) { try { raf.close(); } catch (Exception e2) { } } } return null; } public int[] updateSendResults(String fileName) { BufferedReader br=null; InputStreamReader isr=null; MessageReceiver ms=null; List receiverList =new ArrayList(); int flag[] = null; String tmpstr=""; try { File temp=new File(SystemParameter.smsResultDir); if(!temp.exists()){ temp.mkdirs(); } File temp2=new File(SystemParameter.smsResultDir+File.separator+fileName); if(!temp2.exists()){ temp2.createNewFile(); } isr = new InputStreamReader(new FileInputStream(temp2), "utf-8"); br=new BufferedReader(isr); while((tmpstr=br.readLine())!=null){ String [] str=tmpstr.split("\t"); if(str.length>=7){ ms=new MessageReceiver(); ms.setMsg_id(new Long(str[1])); ms.setReceive_time_sms(new Long(str[4]));//时间 ms.setReceive_state_sms(new Integer(str[5]));//状态 receiverList.add(ms); } } messageDao.updateSendResults(receiverList); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(br!=null){ br.close(); } if(isr!=null){ isr.close(); } } catch (IOException e) { e.printStackTrace(); } } return flag; } }
---------WS客户端核心代码封装----------------
package com.hollyinfo.webservice; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.List; import java.util.Vector; import javax.activation.DataHandler; import javax.activation.FileDataSource; import org.apache.axiom.attachments.utils.IOUtils; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axiom.om.OMText; import org.apache.axiom.soap.SOAP11Constants; import org.apache.axis2.AxisFault; import org.apache.axis2.Constants; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; import com.hollyinfo.SystemParameter; /** * 文件传输客户端 * @author wulihai * @Date 2010-06-08 * */ public class SMSFileTransClient { private static EndpointReference targetEPR =new EndpointReference(SystemParameter.targetEPR); public boolean upload(String fileName, File file, String fileType) { try { OMElement data = buildUploadEnvelope(fileName, file, fileType); Options options = buildOptions(); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement ome = sender.sendReceive(data); String b = ome.getText(); return Boolean.valueOf(b).booleanValue(); } catch(Exception e) { e.printStackTrace(); } return false; } public boolean download( String fileName, String fileType) { FileOutputStream ops=null; InputStream ips=null; try { OMElement data = buildDownloadEnvelope( fileName, fileType); Options options = buildOptions(); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement ome = sender.sendReceive(data); OMText binaryNode = (OMText) ome.getFirstOMChild(); binaryNode.setOptimize(true); DataHandler actualDH = (DataHandler) binaryNode.getDataHandler(); File tmpDir=new File(SystemParameter.smsResultDir); if(!tmpDir.exists()){ tmpDir.mkdirs(); } //下载保存文件 File tmpfile=new File(SystemParameter.smsResultDir+File.separator+fileName+"."+fileType); if(!tmpfile.exists()){ tmpfile.createNewFile(); } ops = new FileOutputStream(tmpfile); ips = actualDH.getInputStream(); //每次读取10KB,写到输出流 int bytesRead=0; byte[] buf = new byte[10*1024]; //10KB while((bytesRead = ips.read(buf)) != -1){ ops.write(buf, 0, bytesRead); } return true; } catch(Exception e) { e.printStackTrace(); }finally{ try { if(ips!=null){ ips.close(); } if(ops!=null){ ops.close(); } } catch (IOException e) { e.printStackTrace(); } } return false; } /** * 删除指定文件 * @param fileName * @param fileType * @return */ public boolean deleteFile( String fileName, String fileType) { boolean flag=false; try { OMElement data = buildDeleteEnvelope(fileName, fileType); Options options = buildOptions(); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement ome = sender.sendReceive(data); for (Iterator _iterator = ome.getChildElements(); _iterator.hasNext();) { OMElement _ele = (OMElement) _iterator.next(); if (_ele.getLocalName().equalsIgnoreCase("success")) { flag=Boolean.valueOf(_ele.getText()).booleanValue() ; } } } catch(Exception e) { e.printStackTrace(); } return flag; } private static OMElement buildDeleteEnvelope(String fileName, String fileType) { OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("http://example.org/filedata", "fd"); OMElement data = fac.createOMElement("deleteFile", omNs); OMElement _fileName = fac.createOMElement("fileName", omNs); _fileName.setText(fileName); OMElement _fileType=fac.createOMElement("fileType", omNs); _fileType.setText(fileType); data.addChild(_fileName); data.addChild(_fileType); return data; } //得到当前的结果文件 public List queryFileList(){ Vector vec=new Vector(); try { OMElement data = buildQuerydEnvelope(); Options options = buildOptions(); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement ome = sender.sendReceive(data); // OMElement firstElement=ome.getFirstElement(); for (Iterator _iterator = ome.getChildElements(); _iterator.hasNext();) { OMElement _ele = (OMElement) _iterator.next(); if (_ele.getLocalName().equalsIgnoreCase("file")) { vec.add(_ele.getText()); } } }catch(Exception e) { e.printStackTrace(); } return vec; } private static OMElement buildQuerydEnvelope() { /************创建调用webservice接口所需的参数OMElement对象*************/ OMFactory fac=OMAbstractFactory.getOMFactory(); OMNamespace omNs=fac.createOMNamespace("http://example.org/filedata", "fd"); //data中包含了需要调用的web service的方法名称,其中queryFileList就是其中的一个方法 OMElement data=fac.createOMElement("queryFileList",omNs); OMElement _flag = fac.createOMElement("flag", omNs); _flag.setText("true"); data.addChild(_flag); return data; } private static OMElement buildUploadEnvelope(String fileName, File file, String fileType) { DataHandler expectedDH; OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("http://example.org/filedata", "fd"); OMElement data = fac.createOMElement("upload", omNs); OMElement fileContent = fac.createOMElement("fileContent", omNs); FileDataSource dataSource = new FileDataSource(file); expectedDH = new DataHandler(dataSource); OMText textData = fac.createOMText(expectedDH, true); fileContent.addChild(textData); OMElement _fileName = fac.createOMElement("fileName", omNs); _fileName.setText(fileName); OMElement _fileType = fac.createOMElement("fileType", omNs); _fileType.setText(fileType); data.addChild(_fileName); data.addChild(_fileType); data.addChild(fileContent); return data; } private static OMElement buildDownloadEnvelope( String fileName, String fileType) { OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("http://example.org/filedata", "fd"); OMElement data = fac.createOMElement("download", omNs); OMElement _fileName = fac.createOMElement("fileName", omNs); _fileName.setText(fileName); OMElement _fileType=fac.createOMElement("fileType", omNs); _fileType.setText(fileType); data.addChild(_fileName); data.addChild(_fileType); return data; } private static Options buildOptions() throws AxisFault { Options options = new Options(); options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI); options.setTo(targetEPR); // enabling MTOM in the client side options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); options.setTransportInProtocol(Constants.TRANSPORT_HTTP); return options; } }
发表评论
-
java开发实战视频详解
2017-07-02 08:09 519java开发实战视频详解 链接: http://pan.bai ... -
ArrayList去重
2013-04-25 10:18 3323public static List removeDuplic ... -
java ArrayList 自定义排序
2013-04-22 11:39 2170import java.util.ArrayList; imp ... -
按照指定编码读取配置文件
2012-12-13 10:17 907BufferedReader reader = new Buf ... -
java读取系统编码
2012-12-13 09:45 902public static void main(String[ ... -
Axis2和现有项目的集成
2011-08-11 10:08 1409axis2和现有项目集成 1.下载axis2-1.5-war. ... -
阻塞队列
2010-09-03 08:54 1230ArrayBlockingQueue为阻塞队列,加入和取出元素 ... -
产生随机字符串
2010-05-05 17:13 1069import java.util.Random; p ... -
常用IO操作
2009-09-22 13:22 1318例子:写文件,在文件末尾追加文字并且指定输出文件内容字符编码为 ... -
FileChannel锁定文件
2009-09-22 10:52 2423当FileLock fl = fc.tryLock();执行成 ... -
SOCKET 文件传输
2009-09-21 15:47 4258要求将服务端文件夹A下的文件拷贝到客户端文件A下 删除服务端文 ... -
ZIP 压缩 和解压缩
2009-09-21 15:40 1138package com.socket.zip.util; ... -
Oracle number类型查询精度丢失问题
2009-08-21 16:00 6809一、需求中要求查到一个字段的值然后保持小数点后2位 ... -
Oracle number类型数据取出来后四舍五入到小数点后2位
2009-08-19 10:46 8139package com.wlh.test; impo ... -
将汉字编码为unicode
2009-07-28 10:26 896package test; import java. ... -
验证码
2009-07-05 17:29 1293验证servlet: package edu.yale. ... -
java.util.Date对象和String对象转换 SimpleDateFormat
2009-06-30 15:35 3078import java.text.ParseExcept ... -
Socket高级编程 多客户端
2009-06-26 14:03 2573客户端: package com.wlh.test; ... -
进制转换
2009-06-18 12:48 116616进制和字符串之间转换--- import java ... -
bat 命令学习
2009-06-01 23:59 11381.Echo 命令 打开回显或关闭请求回显功能,或显示消 ...
相关推荐
这些资源可以帮助开发者了解并实践如何在Axis2中实现复杂的对象传输和文件传输。通过阅读和运行这些示例,开发者可以掌握如何在实际项目中使用Axis2来解决类似问题。 总的来说,这个实战教程将指导你如何利用Axis2...
【标题】:Axis2开发Web服务总结 【摘要】:本文档主要总结了使用Axis2框架开发Web服务的相关知识,包括Web服务技术介绍、开发流程、必要的开发前准备以及具体的开发实例。 【详细内容】: 1. **Web Service技术...
在这个“WebService的开发模版(Axis2 1.5环境)”中,我们将探讨如何在Axis2 1.5框架下创建和使用Web服务。 Axis2是Apache软件基金会开发的一个Web服务引擎,它是Apache Axis1的升级版本,提供了更强大的功能和更...
标题“axis2 jdk1.4用jar”指的是在Java Development Kit (JDK) 1.4环境下使用Apache Axis2的特定版本,因为Axis2是一个基于Java的Web服务框架,它允许开发人员创建、部署和管理Web服务。在这个场景中,可能是指一个...
在这个过程中,Eclipse提供了便捷的开发环境,AXIS2则简化了Web服务的创建和调用。理解并掌握这些步骤,你就可以自如地在Java环境中使用WebService进行远程通信了。在实际项目中,可能还需要考虑安全性、性能优化...
标题中的"axis2-xmlbeans-1.5.jar.zip"是一...这个"axis2-xmlbeans-1.5.jar.zip"文件对于开发使用Axis2框架和XMLBeans处理XML的Java Web服务项目来说是一个重要的资源。它包含了运行和开发此类服务所需的库和许可信息。
6. **服务开发**:开发人员可以使用Axis2提供的工具或者通过编写Java代码直接创建服务,然后打包成AAR文件进行部署。 7. **客户端使用**: Axis2也支持生成客户端代码,使调用Web服务变得更简单,可以使用WSDL2Java...
- **axis2-1.5.6-bin.zip**:这是 Axis2 的二进制发行版,包含了 Axis2 运行时环境的全部文件,包括库、配置文件和命令行工具,用于快速搭建和运行 Axis2 服务。 - **axis2-1.5.6-war.zip**:这是一个 Web 应用程序...
官方版本,亲测可用
Axis2是Apache软件基金会开发的一个开放源码的Web服务引擎,它是基于SOAP(Simple Object Access Protocol)和WS-*(Web Services栈)规范的。这个"axis2-1.5源码"提供了对 Axis2 框架核心功能的深入了解,对于...
使用axis2-1.5开发包 从最简单的开始 ,-uri 指定wsdl文件> WSDL2Java -uri currencyConvert.wsdl-d 使用不同的data binding方法> WSDL2Java -uri currencyConvert.wsdl -d xmlbeans-a 生成异步的方法> WSDL2Java -...
在开发和部署基于Axis2的Web服务时,理解并熟练掌握这三种配置文件的使用至关重要。它们允许开发者精细控制服务的行为,提高性能,实现复杂的功能,并且可以方便地扩展和维护服务架构。 至于标签中的“源码”和...
了解并熟练使用Axis1.4和Axis2的相关jar文件,对于开发和维护Web服务至关重要。这不仅可以帮助开发者快速构建服务,还能确保与现有系统和其他Web服务的互操作性。在实际项目中,应根据具体需求选择适合的版本,同时...
官方版本,亲测可用
标签“axis2 jar”进一步确认了我们的焦点,即Axis2的JAR文件,这是开发和运行基于Axis2的Web服务所必需的。 以下是一些与这些文件相关的详细知识点: 1. **Apache Axis2**:Axis2是Apache SOAP项目的第二代产品,...
"Axis2范例,对象传输" 指的是使用Apache Axis2框架进行Web服务开发的一个示例项目,重点在于演示如何通过Axis2传输和处理对象,特别是涉及对象与XML之间的转换,以及在客户端和服务端之间的通信。 **描述详解:** ...
在Web服务开发领域,Apache Axis2是一个重要的开源工具,它被广泛用于创建和部署SOAP(Simple Object Access Protocol)和RESTful Web服务。标题中的"Axis2接口生成WSDL工具"正是 Axis2 的一个重要特性,它允许...
而在Axis2.x中,服务接口和实现通常定义在服务档案(Service Archive, AAR)文件中,该文件包含了服务的所有依赖和元数据。 在jar文件的使用上,Axis1.x和Axis2.x都有各自的依赖库。 Axis1.x的jar文件主要包括axis....