采用eclipse开发Axis2是非常方便的,这里我强烈推介大家采用eclipse来开发
本例我们采用jax ws来发布webservice,来实现AXIS2上传文件的功能,我们首先写服务端代码:
首先我们定义接口:
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface IUpfile {
//上传的数据和需要上传到那一个地址
@WebMethod
public boolean setFile(String dir,boolean appand,String data);
//清空文件
@WebMethod
public boolean isEmpty(String dir);
}
@WebService 和下面的@WebMethod 注释分别表示这是一个webservice类,以及那些方法被发布出去
下面我们实现这个接口,这个实现类有点复杂,大家慢慢看吧,高手就请默默的走开哦
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.jws.WebService;
@WebService(serviceName="upfile",endpointInterface="study.ws.jaxws.ffile.IUpfile")
public class Upfile implements IUpfile{
private BufferedWriter bw = null;
FileWriter fw;
@Override
public boolean setFile(String dir,boolean appand,String data) {
boolean b = true;
//如果为假表示创建BufferedWriter失败
if(!setUpfile(dir,appand)){
System.out.println("创建BufferedWriter失败");
return false;
}
if(bw == null){
System.out.println("BufferedWriter空异常,函数setUpfile");
return false;
}
if(data != null){
try {
bw.write(data);
bw.write("\n");
Thread.sleep(5000);
sleeps();
} catch (IOException e) {
e.printStackTrace();
// TODO Auto-generated catch block
System.out.println("文件上传失败");
b = false;
return false;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("文件上传成功");
}
try {
bw.flush();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
//必须先运行这个,可以获得一个文件写入流
private boolean setUpfile(String dir,boolean appand){
try {
//true表示追加
fw = new FileWriter(dir,appand);
bw = new BufferedWriter(fw);
return true;
} catch (IOException e) {
System.out.println("创建BufferedWriter失败");
return false;
}
}
@Override
public boolean isEmpty(String dir) {
File f = new File(dir);
System.out.println("未清空前文件的大小是:"+f.length());
try {
fw = new FileWriter(dir);
bw = new BufferedWriter(fw);
bw.write("");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("清空后文件的大小是:"+f.length());
if(f.length()>0){
return false;
}else{
return true;
}
}
private void sleeps(){
System.out.println("这里执行了其他的程序");
}
}
这个实现类中,注解需要使用endpointInterface进行全路径指定,serviceName表示发布服务的名称
接下来我们将这个包发布成jar
注意,需要将这个jar发布到tomcat下的 axis2\WEB-INF\servicejars\ 这个目录下哦,当然servicejars是可以更改的,默认是发布到这里
然后我们启动我们的tomcat
然后打开URL
http://localhost:8080/axis2/services/upfile?wsdl
我们会看到我们发布的应用已经能够发布成功了
接下来我们使用eclipse发布客户端程序
首先创建一个项目
再右键点击这个项目发布web service client
点击下一步,将我们的wsdl的url地址复制进去
稍等一下,点击finish完成创建
这时我们刚创建的项目就会生成我们需要的java类
这些生成的java类大家可以研究下,其中本例中我们用到的是IUpfileProxy代理类
现在我们开始创建客户端测试代码吧
public class jaxws_file {
public static void main(String[] args) {
IUpfile file = new IUpfileProxy();
BufferedReader br = null;
FileReader fd = null;
String str = null;
boolean b = true;
try {
fd = new FileReader("D:\\111.html");
br = new BufferedReader(fd);
System.out.println("开始上传文件成功");
str = br.readLine();
while (str != null) {
if(!file.setFile("d:\\test\\aab.tet",true,str)){
System.out.println("发生错误了哦,准备清空文件");
file.isEmpty("d:\\test\\aab.tet");
if(file.isEmpty("d:\\test\\aab.tet")){
System.out.println("清空文件成功");
}else{
System.out.println("清空文件失败");
}
b = false;
break;
}
str = br.readLine();
}
if(b){
file.setFile("d:\\test\\aaa.tet",true,null);
System.out.println("上传文件成功");
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
br.close();
fd.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以上代码实现了向服务器端传送数据,服务器端保存数据的功能,如果遇到错误会有提示或清空文件的功能
写在最后:
本例中所需要的jar包,可在apache官方网站下载到:http://axis.apache.org/axis2/java/core/download.cgi。
本例中使用了零配置发布(jaxws),需要将jdk目录中的tools.jar复制到项目中,或复制到tomcat的lib目录中,否则会提示错误:
<error><description>Unable to generate WSDL 1.1 for this service</description><reason>If you wish Axis2 to automatically generate the WSDL 1.1, then please set useOriginalwsdl as false in your services.xml</reason>javax.xml.ws.WebServiceException: Error occurred generating WSDL file for Web service implementation class {study.ws.jaxws.ffile.Upfile}
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情



