您的位置:首页 > 其它

WebService CXF学习 1

2014-07-14 10:54 183 查看
理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解:

首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/

新建一个Java Project,导入cxf常用.jar包

Java代码

1.commons-logging-1.1.1.jar

2.geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)

3.geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)

4.geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)

5.geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)

6.geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)

7.geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)

8.geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)

9.jaxb-api-2.1.jar

10.jaxb-impl-2.1.12.jar

11.jetty-6.1.21.jar

12.jetty-util-6.1.21.jar

13.neethi-2.0.4.jar

14.saaj-api-1.3.jar

15.saaj-impl-1.3.2.jar

16.wsdl4j-1.6.2.jar

17.wstx-asl-3.2.8.jar

18.XmlSchema-1.4.5.jar

19.xml-resolver-1.2.jar

20.cxf-2.2.2.jar

commons-logging-1.1.1.jar

geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)

geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)

geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)

geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)

geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)

geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)

geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)

jaxb-api-2.1.jar

jaxb-impl-2.1.12.jar

jetty-6.1.21.jar

jetty-util-6.1.21.jar

neethi-2.0.4.jar

saaj-api-1.3.jar

saaj-impl-1.3.2.jar

wsdl4j-1.6.2.jar

wstx-asl-3.2.8.jar

XmlSchema-1.4.5.jar

xml-resolver-1.2.jar

cxf-2.2.2.jar

接下就是HelloWorld Demo开发了

第一步:新建一个webservice接口

Java代码

1.@WebService

2.public interface IHelloWorld {

3. //@WebParam给参数命名,提高可代码可读性。此项可选

4.blic String sayHi(@WebParam(name="text") String text);

5.}

@WebService

public interface IHelloWorld {

//@WebParam给参数命名,提高可代码可读性。此项可选

public String sayHi(@WebParam(name="text") String text);

}

通过注解@WebService申明为webservice接口

第二步,实现WebService接口

Java代码

1. @WebService

2. public class HelloWorldImpl implements IHelloWorld {

3.

4.public String sayHi(String name) {

5. System.out.println("sayHello is called by " + name);

6. return "Hello " + name;

7.}

8.

9. }

@WebService

public class HelloWorldImpl implements IHelloWorld {

public String sayHi(String name) {

System.out.println("sayHello is called by " + name);

return "Hello " + name;

}

}

第三步,创建服务端

Java代码

1. public class Server {

2.

3.private Server(){

4. IHelloWorld helloWorld = new HelloWorldImpl();

5. //创建WebService服务工厂

6. JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();

7. //注册WebService接口

8. factory.setServiceClass(IHelloWorld.class);

9. //发布接口

10. factory.setAddress("http://localhost:9000/HelloWorld");

11. factory.setServiceBean(helloWorld);

12. //创建WebService

13. factory.create();

14.};

15.

16.public static void main(String[] args) throws InterruptedException{

17. //启动服务端

18. new Server();

19. System.out.println("Server ready...");

20. //休眠一分钟,便于测试

21. Thread.sleep(1000*60);

22. System.out.println("Server exit...");

23. System.exit(0);

24.}

25. }

public class Server {

private Server(){

IHelloWorld helloWorld = new HelloWorldImpl();

//创建WebService服务工厂

JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();

//注册WebService接口

factory.setServiceClass(IHelloWorld.class);

//发布接口

factory.setAddress("http://localhost:9000/HelloWorld");

factory.setServiceBean(helloWorld);

//创建WebService

factory.create();

};

public static void main(String[] args) throws InterruptedException{

//启动服务端

new Server();

System.out.println("Server ready...");

//休眠一分钟,便于测试

Thread.sleep(1000*60);

System.out.println("Server exit...");

System.exit(0);

}

}

第四步,创建客户端

Java代码

1. public class Client {

2.

3.private Client(){};

4.

5.public static void main(String[] args){

6. //创建WebService客户端代理工厂

7. JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

8. //注册WebService接口

9. factory.setServiceClass(HelloWorld.class);

10. //设置WebService地址

11. factory.setAddress("http://localhost:9000/HelloWorld");

12. IHelloWorld iHelloWorld = (IHelloWorld)factory.create();

13. System.out.println("invoke webservice...");

14. System.out.println("message context is:"+iHelloWorld.sayHi("

15. Josen"));

16. System.exit(0);

17.}

18. }

19.

public class Client {

private Client(){};

public static void main(String[] args){

//创建WebService客户端代理工厂

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

//注册WebService接口

factory.setServiceClass(HelloWorld.class);

//设置WebService地址

factory.setAddress("http://localhost:9000/HelloWorld");

IHelloWorld iHelloWorld = (IHelloWorld)factory.create();

System.out.println("invoke webservice...");

System.out.println("message context is:"+iHelloWorld.sayHi("

Josen"));

System.exit(0);

}

}

最后是万事俱备,只欠测试了

首先,运行服务端程序

其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: