mule 基于wsdl调用cxf web service

简介: 最近看mule的一个文档mule esb 3 concepts,介绍了mule esb的一些基本概念。看完后,对soa,esb,服务等都有了更深的认识。今天试验通过mule进行cxf web service的调用,试了一下午终于成功。 1,首先要有一个已经发布的cxf web service,可以通过mule studio以图形化的方式简单生成config.xml,再

最近看mule的一个文档mule esb 3 concepts,介绍了mule esb的一些基本概念。看完后,对soa,esb,服务等都有了更深的认识。今天试验通过mule进行cxf web service的调用,试了一下午终于成功。

1,首先要有一个已经发布的cxf web service,可以通过mule studio以图形化的方式简单生成config.xml,再写好相应的component class,就是发布用到的接口和pojo类。

interface

_____________________________

@WebService

public interface IHello {

@WebMethod

public String sayHello(@WebParam (name="name")String name);

}

 

class

_____________________

package test.server;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

 

package test.server;

public class Hello implements IHello {

public String sayHello(String name) {

// TODO Auto-generated method stub

System.err.println("name: "+name);

return "Hello, "+name;

}

}

2,用基于wsdl文件的方式调用。

在cxf的bin目录,用wsdl2java生成client,就是下面继承自javax.xml.ws.Service的java类。

wsdl2java命令:wsdl2java -d test -client http://localhost:8081?wsdl

 

生成的client类

————————————————————

package test.server;

 

import java.net.MalformedURLException;

import java.net.URL;

import javax.xml.namespace.QName;

import javax.xml.ws.WebEndpoint;

import javax.xml.ws.WebServiceClient;

import javax.xml.ws.WebServiceFeature;

import javax.xml.ws.Service;

 

/**

 * This class was generated by Apache CXF 2.5.0

 * 2011-12-18T15:35:33.461+08:00

 * Generated source version: 2.5.0

 * 

 */

@WebServiceClient(name = "IHelloService", 

                  wsdlLocation = "http://localhost:8081?wsdl",

                  targetNamespace = "http://server.test/") 

public class IHelloService extends Service {

 

    public final static URL WSDL_LOCATION;

 

    public final static QName SERVICE = new QName("http://server.test/", "IHelloService");

    public final static QName IHelloPort = new QName("http://server.test/", "IHelloPort");

    static {

        URL url = null;

        try {

            url = new URL("http://localhost:8081?wsdl");

        } catch (MalformedURLException e) {

            java.util.logging.Logger.getLogger(IHelloService.class.getName())

                .log(java.util.logging.Level.INFO, 

                     "Can not initialize the default wsdl from {0}", "http://localhost:8081?wsdl");

        }

        WSDL_LOCATION = url;

    }

 

    @WebEndpoint(name = "IHelloPort")

    public IHello getIHelloPort() {

        return super.getPort(IHelloPort, IHello.class);

    }

 

}

3,eclipse+mule ide环境中,创建mule project,将上面的client类copy到project,再新建一个config.xml。然后右键选择运行。

config.xml如下:

 

<?xml version="1.0" encoding="UTF-8"?>

 

<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"

xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 

http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd 

http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd ">

<flow name="client">

<http:inbound-endpoint exchange-pattern="request-response"//发出http request并等待response

host="localhost" port="8888">//从localhost:8888接收http request。

 

<response>

<object-to-string-transformer />//将响应返回给http transport,在浏览器回显。

</response>

</http:inbound-endpoint>

 

<http:outbound-endpoint exchange-pattern="request-response"//调用webservice并等待返回结果

host="localhost" port="8081">

<cxf:jaxws-client port="IHelloPort" clientClass="test.server.IHelloService"

operation="sayHello" wsdlLocation="http://localhost:8081?wsdl" />

</http:outbound-endpoint>

</flow>

</mule>

 4,运行config.xml.在地址栏输入http://localhost:8888/abc, browser会显示hello,/abc.

hello,/abc 是通过调用web service而得到的返回结果。

目录
相关文章
|
1月前
|
存储 缓存 算法
关于 Service Worker 和 Web 应用对应关系的讨论
关于 Service Worker 和 Web 应用对应关系的讨论
12 0
|
2月前
|
Java API Apache
Apache CXF生成WebService的客户端
Apache CXF生成WebService的客户端
|
2月前
|
XML 网络架构 数据格式
Ruby 教程 之 Ruby Web Service 应用 - SOAP4R 2
Ruby Web Service 应用 - SOAP4R
24 5
|
2月前
|
XML Linux 网络架构
Ruby 教程 之 Ruby Web Service 应用 - SOAP4R 1
Ruby Web Service 应用 - SOAP4R
23 3
|
4月前
|
Java 数据库连接 Apache
SpringBoot整合CXF实现WebService
SpringBoot整合CXF实现WebService
123 0
|
15天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
26天前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
26 7
|
1天前
|
JSON Java fastjson
Spring Boot 底层级探索系列 04 - Web 开发(2)
Spring Boot 底层级探索系列 04 - Web 开发(2)
11 0
|
1天前
|
安全 编译器 PHP
PHP 8.1版本发布:引领Web开发新潮流
PHP编程语言一直是Web开发的主力军,而最新发布的PHP 8.1版本则为开发者们带来了更多创新和便利。本文将介绍PHP 8.1版本的主要特性,包括更快的性能、新的语言功能和增强的安全性,以及如何利用这些功能来提升Web应用程序的质量和效率。
|
4天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册

热门文章

最新文章