加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService:搭建cxf环境

发布时间:2020-12-17 00:01:01 所属栏目:安全 来源:网络整理
导读:1,Apache CXF = Celtix + Xfire OSGi(框架):动态项目调用,可以实现不同项目之间的访问。 2,CXF优势: (1),RESTful(Representation StateTransfer),静态地址参数转换。 我们通过HTTP提交用户名和密码的时候,地址栏输入的格式是: http://localhost:808

1,Apache CXF = Celtix + Xfire

OSGi(框架):动态项目调用,可以实现不同项目之间的访问。

2,CXF优势:

(1),RESTful(Representation StateTransfer),静态地址参数转换。

我们通过HTTP提交用户名和密码的时候,地址栏输入的格式是:

http://localhost:8080/hello?name=xzm&password=xzm

RESTful把这个格式修改了。比如改成:http://localhost:8080/hello/xzm/xzm

地址参数转换了,更加安全。

(2),CORBA(Common Object Request BrokerArchitecture)公共对象请求代理体系结构,早期语言使用ws。C,C++,C#。

(3),可以与Spring进行快速无缝的整合。

(4),灵活的部署,可以运行在tomcat,Jboss,Jetty,IBMWebSphera,BeaWebLogic上面。

3,STS软件

SpringSource tool suite


是spring自己做的项目,类似于Eclipse和Myeclipse。

?

4,CXF

(1)在如下路径找到可以使用Ant解析的build.xml文件。


(2)CXF的体系结构


Bus:总线。决定了速度的快慢。

Frontend:

Messaging and Interceptors:消息和拦截器

Service Model:服务模型

Data bindings:数据绑定

Protocol bindings:协议绑定(soap1.1和soap1.2)

Transport:

?

我们要关注的是Bus和Frontend。

?

(3)CXF的一个额外jar文件


圈出的两个jar,是apache提供的,用来代替URLConnection的。

解压2.4版本的CXF,解压后的etc文件夹中是配置文件,其中,web.xml文件提供了在WEB应用下使用CXF的配置规范。

在cxf的解压目录中,bin是可执行文件,常用的是wsdl2java。将wsdl转换为java文件。

安装ant,命令行进入到build.xml所在目录,执行ant命令,就会解析build.xml文件。

生成cxf的文件。

?

(4)在MyEclipse中开发cxf工程。

首先建立一个java工程,

导入需要的jar包:


新建一个类,比如HelloWorld。

通过cxf启动ws服务。

import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

@WebService
public class HelloWorld {
	public void sayHello() {
		System.out.println("hello cxf!!!");
	}
	
	public static void main(String[] args) throws InterruptedException {
		/*原始发布形式
		Endpoint end = Endpoint.publish("http://192.168.0.104:8989/hello",new HelloWorld());
		Thread.sleep(3000);
		end.stop();
		*/
		/**
		 * 这里为什么使用set方式设置呢,因为cxf要与spring整合,spring的设值注入都是通过set方法注入的。
		 */
		//cxf发布形式
		JaxWsServerFactoryBean factoryBean = new  JaxWsServerFactoryBean();
		//设置地址
		factoryBean.setAddress("http://192.168.0.104:8989/hello");
		//设置具体类
		factoryBean.setServiceBean(new HelloWorld());
		//启动
		factoryBean.create();
	}
}

运行,到浏览器中访问http://192.168.0.104/hello?wsdl,可获取生成的wsdl文档。


注意,此处生成的wsdl与之前通过endpoint生成的wsdl文档是不同的。


此外,通过cxf发布的没有地址,通过endpoint发布的有地址。比较下图。


其实通过cxf发布的是将地址中的描述集成到了一个页面,即左边的页面。

?

将获取的wsdl页面右键另存为,保存为hello.wsdl文件,复制到项目的src中。


可以显示拥有的方法。

通过cxf发布的,生成wsdl后,上图的右面的箭头在服务关闭后继续可以使用;通过endpoint发布的,生成wsdl后,上图的右面的箭头在服务关闭后就不能使用了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读