使用Simple Frontend+Aegis发布与调用Web服务详解
需积分: 9 153 浏览量
更新于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服务是一种简洁、高效的实践,尤其适合那些希望快速搭建原型或者不想被过多技术细节束缚的开发者。这种方式减少了代码量,提高了开发效率,同时也保持了代码的可读性和可维护性。
2010-12-20 上传
2019-08-29 上传
2018-06-05 上传
点击了解资源详情
2014-04-18 上传
2020-11-10 上传
2018-07-26 上传
2017-09-26 上传
shanguochuan
- 粉丝: 0
- 资源: 7
最新资源
- Python中快速友好的MessagePack序列化库msgspec
- 大学生社团管理系统设计与实现
- 基于Netbeans和JavaFX的宿舍管理系统开发与实践
- NodeJS打造Discord机器人:kazzcord功能全解析
- 小学教学与管理一体化:校务管理系统v***
- AppDeploy neXtGen:无需代理的Windows AD集成软件自动分发
- 基于SSM和JSP技术的网上商城系统开发
- 探索ANOIRA16的GitHub托管测试网站之路
- 语音性别识别:机器学习模型的精确度提升策略
- 利用MATLAB代码让古董486电脑焕发新生
- Erlang VM上的分布式生命游戏实现与Elixir设计
- 一键下载管理 - Go to Downloads-crx插件
- Java SSM框架开发的客户关系管理系统
- 使用SQL数据库和Django开发应用程序指南
- Spring Security实战指南:详细示例与应用
- Quarkus项目测试展示柜:Cucumber与FitNesse实践