采用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/天,具体规则查看活动详情