`

用Axis+MyEclipse自动生成webService

阅读更多

项目上说是要用到web Service 给其他系统提供接口。然后通过查找资料以及自己的理解和整理 发到这里供大家参考。

1.我先是在项目中写了2个类 然后用MyEclipse自带的web service来生成。

2.对已生成好的web service服务端进行发布后 写了测试方法 测试通过。

3.在web service生成过程中参考http://jyangzi5.iteye.com/blog/671479中的资料,这里的生成过程已经写的很详细,但是我是第一次使用web service,对其中的一些内容理解的不是很透彻,通过自己的理解及测试 整理以下内容:

 

首先是我写的一个文件上传的类:

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.adobe.internal.pdftoolkit.services.javascript.stubs.auto.Directory;

public class FileUpload {
                //文件上传类(该方法用于生成webservice)
	public boolean SaveFile(byte[] binData, String fileName) {//传入的参数为:文件字节流,上传后的文件路径及名称
		boolean success = false;
		File file = new File(fileName);
		file.getParentFile().mkdirs();
		
		try {
			BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
					new FileOutputStream(file));
			bufferedOutputStream.write(binData);
			bufferedOutputStream.close();
			success = true;
		} catch (IOException e) {
			e.printStackTrace();
		}

		return success;
	}

	 // 生成web service时使用的测试方法
	 public String getUserName(String str) {
	 return "Hello" + str + ",this is an Axis Dynamic Proxy Web Service";
	 }

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FileUpload fu = new FileUpload();
		//在main方法中写的在本地进行上传的测试方法
		File fileS = new File("f:\\sxm\\nod32激活码.txt");

		if (!fileS.exists()) {
			System.out.println("找不到指定文件");
			return;
		}
		FileInputStream fileIS = null;
		byte[] binData = null;
		try {
			fileIS = new FileInputStream(fileS);
			binData = new byte[(int) fileS.length()];
			BufferedInputStream bufferedInputStream = new BufferedInputStream(
					new FileInputStream(fileS));
			int r = bufferedInputStream.read(binData);
			if (r != fileS.length())
				throw new IOException("读取文件不正确");
			bufferedInputStream.close();
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		} finally {
			if (fileIS != null) {
				try {
					fileIS.close();
				} catch (IOException ex) {
					ex.printStackTrace();
				}
			}
		}
		boolean f = fu.SaveFile(binData, "c:\\11.txt");
	}
}

 其次:类写好了以后 就开始自动生成

步骤为:

1、在新建向导中选择Web Service-->Web Service,在显示的窗口中选择要生成的类:

2、点击下一步,选择要生成web service的方法:

方法选择

3、点击下一步并完成web service的生成。

 

现在web service已经生成好了

系统会在项目的WebContent目录下自动生成wsdl文件以及Service、web.xml、wsdd文件

生成后的目录结构

 

web.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>   
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
  
    <servlet>   
    <servlet-name>AxisServlet</servlet-name>   
      
    <servlet-class>   
        org.apache.axis.transport.http.AxisServlet   
    </servlet-class>   
  </servlet>   
  <servlet-mapping>   
    <servlet-name>AxisServlet</servlet-name>   
    <url-pattern>/servlet/AxisServlet</url-pattern>   
  </servlet-mapping>   
  
  <servlet-mapping>   
    <servlet-name>AxisServlet</servlet-name>   
    <url-pattern>*.jws</url-pattern>   
  </servlet-mapping>   
  
  <servlet-mapping>   
    <servlet-name>AxisServlet</servlet-name>   
    <url-pattern>/services/*</url-pattern>   
  </servlet-mapping>   
</web-app>  

 

wsdl文件:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://Tools.**.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://Tools.**.com" xmlns:intf="http://Tools.**.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
 <wsdl:types>
  <schema elementFormDefault="qualified" targetNamespace="http://Tools.**.com" xmlns="http://www.w3.org/2001/XMLSchema">
   <element name="SaveFile">
    <complexType>
     <sequence>
      <element name="binData" type="xsd:base64Binary"/>
      <element name="fileName" type="xsd:string"/>
     </sequence>
    </complexType>
   </element>
   <element name="SaveFileResponse">
    <complexType>
     <sequence>
      <element name="SaveFileReturn" type="xsd:boolean"/>
     </sequence>
    </complexType>
   </element>
  </schema>
 </wsdl:types>

   <wsdl:message name="SaveFileRequest">

      <wsdl:part element="impl:SaveFile" name="parameters">

      </wsdl:part>

   </wsdl:message>

   <wsdl:message name="SaveFileResponse">

      <wsdl:part element="impl:SaveFileResponse" name="parameters">

      </wsdl:part>

   </wsdl:message>

   <wsdl:portType name="FileUpload">

      <wsdl:operation name="SaveFile">

         <wsdl:input message="impl:SaveFileRequest" name="SaveFileRequest">

       </wsdl:input>

         <wsdl:output message="impl:SaveFileResponse" name="SaveFileResponse">

       </wsdl:output>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="FileUploadSoapBinding" type="impl:FileUpload">

      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="SaveFile">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="SaveFileRequest">

            <wsdlsoap:body use="literal"/>

         </wsdl:input>

         <wsdl:output name="SaveFileResponse">

            <wsdlsoap:body use="literal"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="FileUploadService">

      <wsdl:port binding="impl:FileUploadSoapBinding" name="FileUpload">
// 测试时访问的地址.    wsdl的访问地址为http://localhost:8080/Indicator/services/FileUpload?wsdl 	
         <wsdlsoap:address location="http://localhost:8080/Indicator/services/FileUpload"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>

 wsdd文件中关键部分(我认为这一部分是最主要的部分,如果类中有多个方法的话 只需要在这个wsdd的配置文件中添加多个service即可):

<ns1:service name="FileUpload" provider="java:RPC" style="wrapped" use="literal">//类名
  <ns2:operation name="SaveFile" qname="ns1:SaveFile" returnQName="ns1:SaveFileReturn" returnType="xsd:string" soapAction="" xmlns:ns1="http://Tools.xjgzinfo.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/axis/wsdd/">//方法名
   <ns2:parameter qname="ns1:binData" type="xsd:byte[]"/>//此处为方法中传入的参数
   <ns2:parameter qname="ns1:fileName" type="xsd:String"/>
  </ns2:operation>
  <ns1:parameter name="allowedMethods" value="SaveFile"/>//方法名
  <ns1:parameter name="typeMappingVersion" value="1.2"/>
  <ns1:parameter name="wsdlPortType" value="FileUpload"/>
  <ns1:parameter name="className" value="com.**.Tools.FileUpload"/>//完整的类名
  <ns1:parameter name="wsdlServicePort" value="FileUpload"/>
  <ns1:parameter name="schemaQualified" value="http://Tools.**.com"/>
  <ns1:parameter name="wsdlTargetNamespace" value="http://Tools.xjgzinfo.com"/>
  <ns1:parameter name="wsdlServiceElement" value="FileUploadService"/>
 </ns1:service>

然后就是对WebService写的一个测试的方法:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		String targetEndPoint1 = "http://localhost:8080/Indicator/services/FileUpload";
		Service ser = new Service();
		try {
			Call call = (Call) ser.createCall();			
			call.setTargetEndpointAddress(targetEndPoint1);
			
			call.setOperation("SaveFile");
			File fileS = new File("f:\\sxm\\nod32激活码.txt");

			if (!fileS.exists()) {
				System.out.println("找不到指定文件");
				return;
			}
			FileInputStream fileIS = null;
			byte[] binData = null;
			try {
				fileIS = new FileInputStream(fileS);
				binData = new byte[(int) fileS.length()];
				BufferedInputStream bufferedInputStream = new BufferedInputStream(
						new FileInputStream(fileS));
				int r = bufferedInputStream.read(binData);
				if (r != fileS.length())
					throw new IOException("读取文件不正确");
				bufferedInputStream.close();
			} catch (FileNotFoundException ex) {
				ex.printStackTrace();
			} catch (IOException ex) {
				ex.printStackTrace();
			} finally {
				if (fileIS != null) {
					try {
						fileIS.close();
					} catch (IOException ex) {
						ex.printStackTrace();
					}
				}
			}			
			boolean flag = (Boolean)call.invoke(new Object[] {binData,new String("c:\\123.txt")});
			System.out.println("flag=========================="+flag);			
		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

  

 web Service 已经生成完毕,启动Tomcat服务

测试结果

flag==========================true

 

 希望以上的内容能大家提供一些参考和帮助。

分享到:
评论

相关推荐

    axis2+myeclipse开发webService

    在MyEclipse中,右键点击接口类,选择"AXIS2" &gt; "Create Service Skeleton",这会自动生成一个实现类,如`HelloWorldServiceImpl`。 5. **配置服务部署描述符(wsdd)**:在`WEB-INF`目录下创建一个名为`services....

    AXIS2+Myeclipse实现WebService数据库存储简单实例

    在AXIS2中,客户端代码可以生成自动生成的服务代理类,通过这些类调用远程Web服务,实现与服务器端的通信。在这个实例中,客户端可能包含了一个简单的Java程序,该程序使用这些代理类向服务器发送登录请求,并处理...

    webservice+axis2+myeclipse+tomcat

    通过以上步骤,你将能够成功地使用 Axis2 和 MyEclipse 在 Tomcat 上创建、部署 WebService,并生成及使用客户端代码进行调用。阅读提供的文档《MyEclipse+AXIS2.doc》和《WebService之axis2的使用.doc》将更深入地...

    Axis 自动生成WebService

    标题 "Axis 自动生成WebService" 涉及到的是在IT行业中创建和使用Web服务的一个关键工具——Axis。Web服务是一种基于互联网的软件应用,允许不同系统之间的数据交换,通常使用XML作为数据格式,SOAP协议进行通信。...

    axis2 1.6 MyEclipse8.6插件 webservice

    axis2 1.6 MyEclipse8.6 插件 webservice 复制到MyEclipse文件夹下得dropins目录,重启MyEclipse 即可,X:\Genuitec\MyEclipse-8.6\dropins

    myeclipse8.5+axis2插件 生成webservice服务并调用-----代码

    ----------示例包括: 普通数据类型 ...使用axis2通过自编写的server端生成wsdl,通过wsdl生成服务(aar,将aar文件放入tomcat/webapps/axis2/WEB-INF/services下),再通过wsdl生成客户端,通过客户端调用服务

    myEclipse10+axis2+tomcat6.0发布WebService.pdf

    本文将介绍如何在myEclipse10中使用Axis2插件与Tomcat6.0发布WebService。首先,我们需要了解Axis2是Apache软件基金会的一个开源项目,它是一个Web服务引擎,用于处理Web服务的发布、部署和管理。myEclipse10是一款...

    myEclipse10+axis2+tomcat6.0发布WebService.docx

    现在,你可以通过Axis2管理界面或自动生成的客户端代码来调用这个服务。 总结,myEclipse10结合Axis2和Tomcat6.0为开发者提供了一套完整的Web服务开发和部署解决方案。从设置环境到发布服务,整个过程清晰明了,...

    myeclipse8.5使用axis2插件开发webservice服务并调用

    ### 使用MyEclipse 8.5与Axis2插件开发WebService服务及调用详解 #### 一、前言 在Web开发中,WebService作为一种重要的分布式系统实现方式,被广泛应用于不同平台之间的通信。本文将详细介绍如何利用MyEclipse ...

    使用myEclipse,tomcat 和Axis发布webService

    【使用myEclipse,tomcat 和Axis发布webService】教程 在IT行业中,Web服务是一种标准的通信方式,使得不同的应用程序之间能够交换数据。本文将详细介绍如何使用myEclipse集成开发环境,Apache Tomcat服务器以及...

    用axis2+Tomcat5.5+MyEclipse7.5部署和访问Web服务

    - 使用Axis插件生成Web服务:通过MyEclipse的“File-&gt;New-&gt;Other”菜单选择相应的Wizard,生成服务档案(AAR文件),并将其部署到Axis2服务器上。 6. **访问Web服务**:部署完成后,可以通过SOAP请求调用发布在...

    使用axis自动生成webservice客户端代码.docx

    【使用Axis自动生成WebService客户端代码】是Web服务开发中的一个重要步骤,它简化了与服务交互的复杂性。本文档主要介绍了如何在MyEclipse 7.0环境下利用Axis 1.4工具生成客户端代码,以便调用并测试Webservice。 ...

    使用axis自动生成webservice客户端代码.pdf

    【使用Axis自动生成WebService客户端代码】是Web服务开发中的一个重要步骤,它简化了客户端调用Web服务的过程。本文档主要介绍了如何使用Axis工具生成客户端代码,以Myeclipse7.0为开发环境,axis1.4为工具版本,...

    MyEclipse生成webservice手册

    在本文中,我们将深入探讨如何使用MyEclipse这个强大的集成开发环境(IDE)来生成Webservice。MyEclipse是基于Eclipse的一款专为Java EE开发者设计的扩展工具,它提供了丰富的功能,包括Web服务的创建、调试和部署。...

    Axis+webservice教程

    ### Axis+WebService 教程详解 #### 一、前言 在Java开发领域,Web服务是一种重要的技术,它允许不同的应用程序之间通过网络进行通信。Axis是Apache组织提供的一款开源工具,用于实现Java Web服务和使用Java开发...

    Axis2+eclipse开发webservice总结

    这将自动生成Wsdl文件,并通过Code Generator Wizard根据Wsdl文件生成客户端代码,方便调用服务。 总的来说,Apache Axis2结合Eclipse提供了便捷的Web服务开发流程,无论是通过aar文件发布还是直接从Java类生成Wsdl...

Global site tag (gtag.js) - Google Analytics