使用axis1.4实现webservice,包含自定义对象、附件传输

目标:调用接口服务器端读取文件传输到客户端。

这里服务器端使用TOMCAT服务器,客户端直接在Eclipse中跑个小的应用程序将接收到的文件保存在硬盘(服务器端需要配置AXIS运行环境,这里不再描述)。

1,FilesObject.java

package cn.ioid.test.axis;


import javax.activation.DataHandler;


/**
 * 使用axis1.4实现webservice传输文件,返回结果对象
 */
public class FilesObject {
	private String[] fileNames = null;
	private DataHandler[] files = null;
	public String[] getFileNames() {
		return fileNames;
	}
	public void setFileNames(String[] fileNames) {
		this.fileNames = fileNames;
	}
	public DataHandler[] getFiles() {
		return files;
	}
	public void setFiles(DataHandler[] files) {
		this.files = files;
	}
	
}

2,FilesGetter.java

package cn.ioid.test.axis;


import javax.activation.DataHandler;
import javax.activation.FileDataSource;


/**
 * 使用axis1.4实现webservice传输文件,接口服务端
 * <br>这里传入一个int型简单参数,返回一个自定义对象
 */
public class FilesGetter {
	public FilesObject getFiles(int inparam){
		FilesObject fo = new FilesObject();
		fo.setFileNames(new String[]{"test.xls"});
		FileDataSource fds = new FileDataSource("D:\\temp\\test.xls");
		fo.setFiles(new DataHandler[]{new DataHandler(fds)});
		return fo;
	}
}

3,配置服务端的server-config.wsdd,添加:

 <service name="testAxis" provider="java:RPC">
  <parameter name="allowedMethods" value="getFiles"/>
  <parameter name="className" value="cn.ioid.test.axis.FilesGetter"/>
  <beanMapping languageSpecificType="java:cn.ioid.test.axis.FilesObject" qname="ns1:FilesObject" xmlns:ns1="urn:FilesGetter"/>
 </service>

4,此时访问服务器:http://localhost:8080/axis/servlet/AxisServlet,点击“wsdl”,应该能看到服务的描述文件,说明正常服务发布。

5,编写客户端代码,使用axis自带的WADL2Java生成客户端代码
java -Djava.ext.dirs=D:\Tomcat5.5.20\webapps\axis\WEB-INF\lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/services/testAxis?wsdl -p cn.ioid.test.axis
注意-p参数,不写的话axis自动生成包名称比较乱。

6,编写调用代码:TestMain.java
package cn.ioid.test.axis;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;

import javax.activation.DataHandler;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;

public class TestMain {
	public static void main(String[] args) {
		Service service = new Service();
		try {
			Call call = (Call)service.createCall();
			URL u = new URL("http://localhost:8080/axis/services/testAxis?wsdl");
			call.setTargetEndpointAddress(u);
			call.setOperationName(new QName("urn:FilesGetter","getFiles"));
			
			call.addParameter("lastId",org.apache.axis.Constants.XSD_STRING,ParameterMode.IN);
			QName qnb = new QName("urn:BeanService","FilesObject");
		    call.registerTypeMapping(FilesObject.class,qnb,new BeanSerializerFactory(FilesObject.class,qnb)
		                         ,new BeanDeserializerFactory(FilesObject.class,qnb));
		    
		    call.setReturnType(qnb);
		    
		    Object rtObj = call.invoke("getFiles",new Object[]{new Integer("0")});
		    if (rtObj != null) {
		    	FilesObject fo = (FilesObject)rtObj;
		    	String[] pns = fo.getFileNames();
		    	DataHandler[] dhs = fo.getFiles();
		    	for(int i=0; i<dhs.length; i++){
		    		InputStream is = dhs[i].getInputStream();
		    		File f = new File("D:\\temp\\_"+pns[i]);
		    		FileOutputStream fos = new FileOutputStream(f);
		    		int b = 0;
                    while((b = is.read()) != -1){
                      fos.write(b);
                    }
                    fos.flush();
                    fos.close();
                    is.close();
		    	}
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

}		    

7,写一个复杂点的Excel文件,命名为:test.xls保存到D:\temp\目录下

8,在Eclipse中直接Run  ---> TestMain.java,该程序将读取“test.xls”并重命名为“_test.xls”保存到“D:\temp”目录下


结束




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现Spring Boot整合Axis1.4实现WebService服务端,可以按照以下步骤进行: 1. 在pom.xml文件中添加Axis1.4依赖: ``` <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> ``` 2. 创建一个WebService接口,并在接口上添加@WebService注解: ``` @WebService public interface UserService { String sayHello(String name); } ``` 3. 创建一个WebService接口的实现类,并在实现类上添加@WebService(endpointInterface = "com.example.demo.UserService")注解: ``` @WebService(endpointInterface = "com.example.demo.UserService") public class UserServiceImpl implements UserService { @Override public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 4. 在Spring Boot的配置文件application.properties中添加Axis1.4的配置: ``` # Axis1.4配置 axis.servletPath=/services/* ``` 5. 创建一个AxisServlet的注册类,并在类上添加@Configuration和@EnableWebMvc注解: ``` @Configuration @EnableWebMvc public class AxisServletRegistration { @Bean public ServletRegistrationBean<AxisServlet> axisServlet() { ServletRegistrationBean<AxisServlet> registration = new ServletRegistrationBean<>(new AxisServlet(), "/services/*"); registration.addInitParameter("axis.servicesPath", "/WEB-INF/services"); registration.addInitParameter("axis.wsddPath", "/WEB-INF/server-config.wsdd"); return registration; } } ``` 6. 启动Spring Boot应用程序,访问http://localhost:8080/services/UserService?wsdl,可以看到WebService服务端已经成功启动。 以上就是Spring Boot整合Axis1.4实现WebService服务端的全部步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值