使用Simple Frontend+Aegis发布与调用Web服务详解
需积分: 9 188 浏览量
更新于2024-11-24
收藏 94KB DOC 举报
"使用Simple Frontend+Aegis方式发布并获取webservice"
在Java世界中,Web服务是应用程序之间交换数据和实现互操作性的重要手段。Apache CXF是一个流行的开源框架,它支持多种Web服务标准,如SOAP、REST和WS-*。本资源介绍了如何使用CXF的Simple Frontend和Aegis绑定来发布和消费Web服务,而无需使用JAX-WS API或者在业务接口上添加特定的注解。
首先,我们来看一下Simple Frontend。这个功能允许开发者将任意Java类直接发布为Web服务,极大地简化了Web服务的开发过程。它不需要在业务接口上声明@WebService或@WebMethod等注解,只需要定义与具体Web服务技术无关的业务接口。
例如,我们有一个名为`HelloWorld`的业务接口,其中包含一个`sayHello`方法,接收一个字符串参数并返回一个字符串结果:
```java
public interface HelloWorld {
String sayHello(String text);
}
```
接着,我们实现这个接口:
```java
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String text) {
return "Hello " + text;
}
}
```
发布Web服务的关键在于`ServerFactoryBean`类,它是CXF提供的一个工具类,用于配置和创建服务器。在下面的示例中,我们创建一个`Server`类来启动Web服务:
```java
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");
Thread.sleep(5 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
}
```
这段代码将`HelloWorld`接口暴露在`http://localhost:9000/Hello`这个URL上,供客户端调用。
Aegis绑定是CXF的一个特性,它允许将Java对象直接映射到XML消息,而无需编写复杂的XML Schema定义。在上述例子中,由于没有明确指定绑定,CXF默认使用了Aegis绑定。这意味着`HelloWorld`接口的方法和参数将被自动转换为SOAP消息的一部分。
要测试发布的Web服务,可以通过发送HTTP请求到指定URL,如在浏览器中输入`http://localhost:9000/Hello?wsdl`,这将返回服务的WSDL描述,说明如何调用服务。客户端可以使用CXF的Client工厂或者自定义的客户端代码来消费这个服务。
使用Simple Frontend+Aegis的方式发布Web服务是一种简洁、高效的实践,尤其适合那些希望快速搭建原型或者不想被过多技术细节束缚的开发者。这种方式减少了代码量,提高了开发效率,同时也保持了代码的可读性和可维护性。
104 浏览量
309 浏览量
130 浏览量
104 浏览量
119 浏览量
8081 浏览量
4064 浏览量
2017-09-26 上传
shanguochuan
- 粉丝: 0
- 资源: 7
最新资源
- 360杀毒5.0 正式版 v5.0.0.8160B x64
- 影响matlab速度的代码-LabVisionIntro:向新手介绍视觉模型的文件
- css3按钮特效鼠标滑过动画按钮切换特效
- Concepts-and-Algorithms-:基本编程结构
- Ejemplos_Lab_Compi1
- Calculus-Early-Transcendentals-8th-Edition-Solutions
- Stat-331-Final:Stat 331共享R代码和文档
- 用来演示无阻塞方式按键防抖代码开发 1. 完成了TIM, USART, LED GPIO初始化,从这里开始修改代码
- cargo-wasi-exe-x86_64-unknown-linux-musl-用于x86_64-unknown-linux-musl的cargo-wasi的预编译二进制文件-Rust开发
- 银色网新企业网站管理系统 v6.1
- data_cube_ui:数据多维数据集用户界面,允许用户与数据多维数据集进行交互并运行样本分析案例
- project-springboot
- cibus-app
- 标志:.svg格式(平面样式)的世界245个标志图标
- 网页常用css3按钮样式代码
- 行业文档-设计装置-一种具有定位功能的采样信息读写手持终端.zip