CXF中 wsdl2java工具的使用方法

 

 

下面是一个使用wsdl2java的例子:

C:\Users\Administrator>F:

F:\>cd misps2

F:\misps2>wsdl2java -d . http://10.10.31.25/MSPGWebPub/MSPGS/MPService.svc?wsdl

F:\misps2>




方法2:F:\phone>wsdl2java -d src -client http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

 

 

环境配置:

1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin

2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功

3、参考它的文档看这个工具的具体参数的用法
wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web service的代码
-impl 生成web service的实现代码
-ant 生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

 

 

wsdl2java -p QueryHrEmployee -d e:\ -all http://10.70.158.127
:8080/axis2_14/services/QueryHrEmployee?wsdl

 

方法二:使用wsdl2java生成客户端

1、需要 一个包:apache-cxf-2.6.1.gz

这个包里有好多jar包,一定要下载下来。

将此包解压,我是放在:E:\CXF\apache-cxf-2.6.1

  



2、将URL调用成功的页面内容,另存为XML
    

3、在cmd中通过wsdl2java生成客户端文件

cd 进入apache-cxd-2.6.1\bin目录
执行命名:
wsdl2java -p service.webservice.client.demo -d F:\MyDocuments\Java\ws\InterfaceControlApp\src -verbose "F:\demoForWebSerivce.xml"
解析
wsdl2java -p 包名 -d 生成文件路径 -verbose "wsdl文件路径"
然后再拷贝到项目里
包名:文件存放的包名,可以写项目中包路径
生成文件路径 :文件存放路径,可以直接写项目路径
wsdl文件:在IE中执行服务端URL显示的XML另存为XML文件。
我是直接到项目路径了,生成前:

生成后:

报错处理:

4、写MAIN调用
     package common;
import javax.xml.ws.Service;
import service.webservice.client.demo.DemoForWebService;
import service.webservice.client.demo.DemoForWebServiceImplService;
import service.webservice.client.demo.User;
/**
* @author 作者 E-mail:
* @version 创建时间:2013-3-20 下午03:39:29
* 类说明
*/
public class TestWSClientByZBY {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  Service service = Service.create(DemoForWebServiceImplService.SERVICE);
 
  String endpointAddress = "http://127.0.0.1:8080/InterfaceControlApp/webservice/demoForWebService?wsdl";
  service.addPort(DemoForWebServiceImplService.HTTPPort, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
  // DMSSender dms = service.getPort(DMSSender.class);
  DemoForWebService dms = service.getPort(DemoForWebServiceImplService.HTTPPort,DemoForWebService.class);
   User user;
  try {
   user = dms.getUserById("admin");
   System.out.println(user.getXtczdm());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}
}

在服务端的实现类中@WebService(endpointInterface = "service.webservice.DemoForWebService",targetNamespace="http://webservice.service/",portName="HTTP_Port")
成功后:

调用完成。

 

 

 

利用CXF wsdl2java生成java代码 

2012-08-24 18:06:52|  分类:java|  标签:|字号订阅

环境配置:

1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin

2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功

3、参考它的文档看这个工具的具体参数的用法
wsdl2java用法:
wsdl2java -p com -d src -all  aa.wsdl
-p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html


http://blog.chinaunix.net/u2/73798/showart_2002108.html

http://hgoldfish.mysmth.net/2007/11/04/cxfceuuaaoathinaeoeie-2/

实例:wsdl2java -p com -d d:/src -client  http://portal.emp.gome.inc/HOwebapp/Gome.OA.ProcessService/Service/ProcessService.asmx?wsdl


























































Apache CXF 是一个Service框架,他简化了Service的创建, CXF实现了JAX-WS2.0规范,并通过了JAX-WS2.0 TCK; CXF和Spring无缝集成;CXF支持多种传输协议(HTTP, JMS, Corba等), 支持多种Binding数据格式(SOAP,XML,JSON等), 支持多种DataBinding数据类型(JAXB, Aegis) 。CXF基于Interceptor的架构,使得整个框架非常易于扩展。
二.  如何发布并调用简单的web service实例
2.1.下载:apache-cxf-2.1.1   http://cxf.apache.org/download.html
2.2. 新建java project ,并加入apache-cxf-2.0.7/lib所有包,编写要发布的web service 接口和实现
import javax.jws.WebService;
@WebService 
public interface HelloWorld {  
     public String sayHello(String text);  
}
import javax.jws.WebService;  
@WebService(endpointInterface="test.HelloWorld")  
public class HelloWorldImpl implements HelloWorld {  
      public String sayHello(String text) {  
                  return "Hello" + text ;  
    }  
  } 
@WebService 注解表示是要发布的web 服务
name:用于Interface,属映射到wsdl:portType element的name属性。 
targetNamespace:用于Interface和implement,如果不指定,缺省会使用包名倒序做为wsdl名空间。
serviceName:用于implement,表示wsdl服务名。
portName:用于implement,表示wsdl:port 的name属性。
endpointInterface:用于implement,指定Interface全名,包括包名。
2.3.发布web service
public class Server {
    protected Server() throws Exception {
         System.out.println("Starting Server");
         HelloWorldImpl implementor = new HelloWorldImpl();
         String address = " http://localhost:9000/helloWorld";
         Endpoint.publish(address, implementor);
    }
    public static void main(String args[]) throws Exception {
        new Server();
        System.out.println("Server ready...");
        Thread.sleep(5 * 60 * 1000);
        System.out.println("Server exiting");
        System.exit(0);
    }
}
运行后,在浏览器中输入 http://localhost:9000/helloWorld?wsdl将显示这个web service的wsdl.说明web service发布成功。
2.4.下面就开始创建一个客户端程序,访问这个web service, 同样新建java project ,并加入apache-cxf-2.0.7/lib所有包,由于CXF已经提供wsdl转化成java 的命令工具,所以创建一个build.xml,用来生成客户端程序。Bulid.xml内容如下:
  
  
  
     
        
     
        
  
     
        
        
        
        
        
           
        
     
  
或者:配置环境变量%CXF_HOME%=E:/WebService/CXF/apache-cxf-2.1.1/apache-cxf-2.1.1(以我的目录为例),并在PATH后加上;%CXF_HOME%/bin
在cmd命令行中输入wsdl2java如果显示其用法表示配置好了。
输入:wsdl2java -d src - client  http://localhost:9000/helloWorld?wsdl
其作用上面的build.xml作用一样。
附加:wsdl2java用法:
wsdl2java -p com -d src -all  aa.wsdl
-p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
详细用法见: http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html
2.5.调用web service
public class MyClient {
      public static void main(String[] argv) {
        HelloWorld  hello = new HelloWorldImplService().getHelloWorldImplPort();
        System.out.println(hello.sayHello("Tom") ); 
      }
    }
注意:运行时,要一定先要发布web sevice.
三.  参考资料
1.CXF 主页:  http://cxf.apache.org/
2. CXF中文讨论组:  http://groups.google.com/group/cxf-zh 
3. Web service:  http://www.w3school.com.cn/webservices/index.asp
4. WSDL:  http://www.w3school.com.cn/wsdl/index.asp
5. SOAP:http://www.w3school.com.cn/soap/index.asp
----------------------------------------------------------- 以上是参考资料,以下是自己的实践-----------------------------------------------------------------------------
我在操作过程中,发现了一个方法的参数resultCode,以及另一个方法的voteCode都让我误操作定义为了错误的类型。
因此需要对 WSDL进行修改后,将其放置在:D:/test/0328目录下面。
我按照上面的地址下载到二级制压缩文件  apache-cxf-2.3.3.zip以后要注意,不要下载包含有src的
例如: apache-cxf-2.3.3-src.tar.gz
解压缩到D:/work/lib/apache-cxf-2.3.3
配置环境变量 CXF-HOME  为“D:/work/lib/apache-cxf-2.3.3”
增加  path  “%CXF-HOME %bin” 后,
在cmd下运行
D:/>cd test
D:/test>cd 0328
D:/test/0328>wsdl2java -frontend jaxws21 -p com.chinatelecom.jx.vote.inf.partner
 *wsdl

 

你可能感兴趣的:(#,webservice)