WebService之CXF框架应用上篇

1、所需的资源文件

需要三个压缩包:apache-cxf-2.4.2.zip,apache-ant-1.8.4-bin.zip,apache-tomcat-7.0.73.zip,并将其解压到同一文件夹下,还要有jdk的支持

2、配置环境变量

JAVA_HOME:D:\Java\jdk1.8.0_101、

CXF_HOME:D:\javaweb\apache-cxf-2.4.2、

ANT_HOME:D:\javaweb\apache-ant-1.8.4、

CATALINA_HOME:D:\javaweb\apache-tomcat-7.0.73,

并把所有的home配置都配置到path路径下,到bin目录;Path = %JAVA_HOME%\bin;%CXF_HOME%\bin;%CATALINA_HOME%\bin;%ANT_HOME%\bin

再配置下CLASSPATH:.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes

3、运行一个cxf实例

a、在D:\javaweb\apache-cxf-2.4.2\samples下找到例子java_first_pojo,将其和同目录下的common_build.xml文件一起拷贝到D:\javaweb\test_cxf下,位置都可自定,但需要无中文字体

b、更改common_build.xml文件,让其支持1.7和1.8的java版本

<condition property=”is.java.version.15″>

<or>

<equals arg1=”${ant.java.version}” arg2=”1.5″/>
<equals arg1=”${ant.java.version}” arg2=”1.6″/>
<equals arg1=”${ant.java.version}” arg2=”1.7″/>
<equals arg1=”${ant.java.version}” arg2=”1.8″/>

</or>

</condition>

 

c、在cmd命令窗口,跳转到D:\javaweb\test_cxf\java_first_pojo,执行ant server(执行的是build.xml文件中name为server的target,但执行server,需要依赖于build,所以具体过程为server–build–指向common_build.xml文件中的build—compile,进行创建build文件夹,javac编译,最后运行server)

出现server :[java] Server ready… ,表示运行服务端代码成功,并生成build文件夹,这时即可通过http://localhost:9000/Hello?wsdl获得服务说明文件wsdl文件

可查看下源代码:

接口:

package demo.hw.server;

public interface HelloWorld {

String sayHi(String text);

}

接口实现类:

package demo.hw.server;

public class HelloWorldImpl implements HelloWorld {

public String sayHi(String text) {

System.out.println(“sayHi called”);
return “Hello ” + text;

}

}

发布服务类:

package demo.hw.server;
import org.apache.cxf.frontend.ServerFactoryBean;

public class Server {

 

protected Server() throws Exception {

//创建了实现类的实例
HelloWorldImpl helloworldImpl = new HelloWorldImpl();

//发布服务类
ServerFactoryBean svrFactory = new ServerFactoryBean();

//设置服务的接口
svrFactory.setServiceClass(HelloWorld.class);

//设置服务的地址
svrFactory.setAddress(“http://localhost:9000/Hello”);

//设置服务的实现类
svrFactory.setServiceBean(helloworldImpl);
svrFactory.create();

}

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

//执行发布
new Server();
System.out.println(“Server ready…”);

//超时5分钟,将会自动退出服务

Thread.sleep(5 * 60 * 1000);
System.out.println(“Server exiting”);
System.exit(0);

}

}

d、另起cmd命令窗口,跳转到D:\javaweb\test_cxf\java_first_pojo,执行ant client

出现client : [java] Invoke SayHi()… [java]Hello Administrator,表示运行客户端成功,完成了服务端的调用,并且这个时候编译服务端代码的cmd命令窗口出现了[java]sayHi called,如果持续执行ant client将不断生成[java]sayHi called

可查看下代码:

客户端调用类:

package demo.hw.client;

import org.apache.cxf.frontend.ClientProxyFactoryBean;
import demo.hw.server.HelloWorld;

public final class Client {

private Client() {
}

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

//创建cxf中的访问代理类
ClientProxyFactoryBean factory = new ClientProxyFactoryBean();

//参数输入,如果没有输入,则直接将访问地址设置为http://localhost:9000/Hello
if (args != null && args.length > 0 && !””.equals(args[0])) {
factory.setAddress(args[0]);
} else {
factory.setAddress(“http://localhost:9000/Hello”);
}

//通过代理类生成服务类
HelloWorld client = factory.create(HelloWorld.class);
System.out.println(“Invoke sayHi()….”);

//进行业务逻辑的调用
System.out.println(client.sayHi(System.getProperty(“user.name”)));
System.exit(0);

}

}

 

 

以上是脱离web容器运行的,从下面开始进行项目在web项目下运行,

e、执行ant war, 在build文件夹下生成war文件夹,其下有helloworld.war

 

f、执行ant deploy –Dtomcat=true,将war包布署到tomcat的webapps下

 

h、开启tomcat服务器,服务就被发布了,查看webapps下的helloworld文件夹下的web.xml,其中是存在一个servlet的,所以可以它,访问http://localhost:8080/helloworld/services,再打开链接,即可得到wsdl服务说明文件,链接的访问路径是由D:\javaweb\test_cxf\java_first_pojo\wsdl下的cxf-servlet.xml来配置的,下下篇会再做解释!

 

i、卸载部署包,停止tomcat后卸载应用:ant undeploy –Dtomcat=true

 

j、清理构建目录:ant clean

4、小结

该文主要介绍cxf环境的搭建,利用ant工具将cxf中的一个小例子在命令窗口运行,运行服务端代码,发布服务,运行客户端代码访问服务;并且把它布署到tomcat下,进而发布webservice服务!下篇将介绍如何在java项目中使用cxf发布服务及访问服务!

 

如果对该文章有疑问或有何看法建议或存在问题的,欢迎评论,恳请指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值