wsdd是什么,webservice接口传输文件

wsdd是什么

WSDD,WebServiceDeploymentDescriptor,是WebService中的定制发布,与即时发布相比,定制发布更加繁琐也更加复杂,但是换来的却是更大的灵活性,因此在实际项目中定制发布还是不二的选择。定制发布需要编写一个WSDD文件,其实就是一个XML描述文件。

XML是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

webservice接口传输文件

WebService中文件传输

WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。

1、 首先编写服务器端上传文件的WebService方法

package com.hoo.service;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import javax.activation.DataHandler;

/**

* function:Axis WebService完成文件上传服务器端

* @author hoojo

* @createDate Dec 18, 2010 1:16:16 PM

* @file UploadFileService.java

* @package com.hoo.service

* @project AxisWebService

* @blog

* @email hoojo_@126.com

* @version 1.0

*/

public class UploadFileService {

/**

* function:传递文件

* @author hoojo

* @createDate Dec 18, 2010 1:27:58 PM

* @param handler DataHandler这个参数必须

* @param fileName 文件名称

* @return upload Info

*/

public String upload(DataHandler handler, String fileName) {

if (fileName != null && !"".equals(fileName)) {

File file = new File(fileName);

if (handler != null) {

InputStream is = null;

FileOutputStream fos = null;

try {

is = handler.getInputStream();

fos = new FileOutputStream(file);

byte[] buff = new byte[1024 * 8];

int len = 0;

while ((len = is.read(buff)) > 0) {

fos.write(buff, 0, len);

}

} catch(FileNotFoundException e) {

return "fileNotFound";

} catch (Exception e) {

return "upload File failure";

} finally {

try {

if (fos != null) {

fos.flush();

fos.close();

}

if (is != null) {

is.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

return "file absolute path:" + file.getAbsolutePath();

} else {

return "handler is null";

}

} else {

return "fileName is null";

}

}

}

上传方法和我们以前在Web中上传唯一不同的就是参数一DataHandler,可以将这类看成文件传输器,他可以把文件序列化。然后通过DataHandler可以得到一个输入流InputStream,通过这个流可以读到文件的内容。其他的操作和普通上传类似。

2、 定制wsdd发布文件上传的WebService服务

xmlns:java="

providers/java">

xmlns:rns="

">

languageSpecificType="java:javax.activation.DataHandler"

serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory" deserializer="org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory" encoding/>

上面才xml节点元素在前面都见过了,说明下operation中的参数,注意要指定参数类型,特别是DataHandler的类型,然后就是typeMapping的serializer、deserializer的序列化和反序列化工厂类的配置。

3、 用dos命令发布当前WebService

C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l

deployUpload.wsdd

发布完成后,可以通过这个地址查看uploadFile这个service了

4、 编写客户端代码

package com.hoo.client;

import java.rmi.RemoteException;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.xml.namespace.QName;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;

import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;

/**

* function:上传文件WebService客户端

*

* @author hoojo

* @createDate Dec 18, 2010 1:38:14 PM

* @file UploadFileClient.java

* @package com.hoo.client

* @project AxisWebService

* @blog

* @email hoojo_@126.com

* @version 1.0

*/

public class UploadFileClient {

public static void main(String[] args) throws ServiceException, RemoteException {

String url = "

";

String fileName = "readMe.txt";

String path = System.getProperty("user.dir") + "\\WebRoot\\" + fileName;

System.out.println(path);

//这样就相当于构造了一个带文件路径的File了

DataHandler handler = new DataHandler(new FileDataSource(path));

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(url);

/**

* 注册异常类信息和序列化类 ns:FileUploadHandler 和 wsdd 配置文件中的typeMapping中的xmlns:hns="ns:FileUploadHandler" 的对应 DataHandler

* 和 wsdd 配置文件中的typeMapping中的qname="hns:DataHandler"的DataHandler对应

*/

QName qn = new QName("ns:FileUploadHandler", "DataHandler");

call.registerTypeMapping(DataHandler.class, qn,

JAFDataHandlerSerializerFactory.class,

JAFDataHandlerDeserializerFactory.class);

call.setOperationName(new QName(url, "upload"));

//设置方法形参,注意的是参数1的type的DataHandler类型的,和上面的qn的类型是一样的

call.addParameter("handler", qn, ParameterMode.IN);

call.addParameter("fileName", XMLType.XSD_STRING, ParameterMode.IN);

//设置返回值类型,下面2种方法都可以

call.setReturnClass(String.class);

//call.setReturnType(XMLType.XSD_STRING);

String result = (String) call.invoke(new Object[] { handler, "remote_server_readMe.txt" });

System.out.println(result);

}

}

至此,文件传输就完成了。怎么样,还不错吧!

如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

原因是jar包版本不统一,解决方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体方法如下:

用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar,然后删除mail,一切就ok了.

以上就是关于wsdd是什么,webservice接口传输文件的全部内容,以及wsdd是什么的相关内容,希望能够帮到您。

版权声明:本文来自用户投稿,不代表【易百科】立场,本平台所发表的文章、图片属于原权利人所有,因客观原因,或会存在不当使用的情况,非恶意侵犯原权利人相关权益,敬请相关权利人谅解并与我们联系(邮箱:350149276@qq.com)我们将及时处理,共同维护良好的网络创作环境。

(0)
上一篇 2024年01月29日 16:13
下一篇 2024年01月29日 16:18

相关推荐

  • 资金股是什么意思,“股份制的概念”是什么

    资金股是什么意思股票是股份公司发行的所有权凭证,是股份公司为筹集资金而发行给各个股东作为持股凭证并借以取得股息和红利的一种有价证券。每股股票都代表股东对企业拥有一个基本单位的所有权。每家上市公司都会发行股票。资金股是保持资金以净流入呈现的股票。 “股份制的概念”是什么股份制:根…

    2023-05-02
  • 奕泽与chr有什么区别,奕泽和chr的区别 是什么

    奕泽和chr的区别 是什么1、区别一:售价,CHR的参考价为13.38-17.98万元,奕泽的参考价为13.88-16.78万元。在入门价位上CHR更低,但是顶配价位CHR会比奕泽高。2、区别二:配置,CHR的顶配车型配置要比奕泽顶配车型配置更加丰富,但是在中低配车型方面CHR要…

    知识分享 2023-06-05
  • 凌派方向盘左下角p△是什么,飞度方向盘左下角是什么按键

    凌派方向盘左下角p△是什么凌派方向盘左下角p△是驻车雷达开关。2019款凌派的三辐式多功能方向盘握感十分的出色,样式进行了重新的设计,采用了真皮包裹,特别的舒适,尺寸大小也很合。方向盘一般是通过花键与转向轴相连,其功能是将驾驶员作用到转向盘边缘上的力转变为转矩后传递给转向轴。使用…

    2023-08-25
  • “按揭贷款退出费”是什么

    “按揭贷款退出费”是什么当你不满意银行服务或利率等因素的时候,选择退出当前银行的按揭贷款服务,选择其他银行的进行按揭贷款的时候,需要支付当前银行的中途退出的费用,这就是按揭贷款退出费。不过从2011年7月1日起,澳洲证券投资委员会已经对这种收取不合理按揭退出费禁止。掌贷广告最新产…

    知识分享 2023-10-06
  • 工资卡 是什么,工资卡一般是什么银行卡比较好

    工资卡 是什么工资卡是记录工资级别、工资标准的原始记录。劳动人事部门在职工进厂时,为每个职工建立工资卡。其内容主要包括:职工的姓名、职务(职称或工种)、工资等级、工资标准、工作部门、参加工作日期、调离工作日期等。工资卡从职工进厂建立,到职工调离或退休时注销。财务部门根据工资卡发放…

    知识分享 2023-12-02
  • 小数点的作用有哪些,小数点的作用 是什么

    小数点的作用 是什么使用小数点作为整数部分与小数部分之间的分界符,同时也可增加精确度。小数点,数学符号,写作“.”,用于在十进制中隔开整数部分和小数部分。小数点尽管小,但是作用极大。小数,是实数的一种特殊的表现形式。所有分数都可以表示成小数,小数中的圆点叫做小数点,它是一个小数的…

    2023-12-27