使用ServicemixESB发布一个外部的WebServiceWord下载.docx

上传人:b****6 文档编号:21699573 上传时间:2023-01-31 格式:DOCX 页数:34 大小:1.24MB
下载 相关 举报
使用ServicemixESB发布一个外部的WebServiceWord下载.docx_第1页
第1页 / 共34页
使用ServicemixESB发布一个外部的WebServiceWord下载.docx_第2页
第2页 / 共34页
使用ServicemixESB发布一个外部的WebServiceWord下载.docx_第3页
第3页 / 共34页
使用ServicemixESB发布一个外部的WebServiceWord下载.docx_第4页
第4页 / 共34页
使用ServicemixESB发布一个外部的WebServiceWord下载.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

使用ServicemixESB发布一个外部的WebServiceWord下载.docx

《使用ServicemixESB发布一个外部的WebServiceWord下载.docx》由会员分享,可在线阅读,更多相关《使用ServicemixESB发布一个外部的WebServiceWord下载.docx(34页珍藏版)》请在冰豆网上搜索。

使用ServicemixESB发布一个外部的WebServiceWord下载.docx

Servicemix的教程参考:

http:

//servicemix.apache.org/tutorials.html

CXF教程参考:

//servicemix.apache.org/4-beginner-web-services-with-servicemix-and-cxf.html

本文使用CXF-bc来实现,参考:

//servicemix.apache.org/servicemix-cxf-bc.html

所需工具:

apache-Servicemix-3.2.2release(据官方说,开源变化很大,最新的比较完备,至少需要3.2以上版本)

//servicemix.apache.org/download.html

apache-Maven2.0以上版本

//maven.apache.org/download.html

JDK1.5以上版本

apache-axis2

//ws.apache.org/axis2/download.cgi

apache-tomcat

apacheeclipsewsdl插件(ServiceArchiveWizard-EclipsePlug-in,CodeGeneratorWizard-EclipsePlug-in等)

//ws.apache.org/axis2/tools/index.html

示例:

1,安装好JDK,并且配置好JDK的环境变量

2,安装好Maven,并且配置好Maven的环境变量

环境变量:

M2_HOME:

 

;

解压Maven的目录

M2:

&

nbsp;

M2_HOME%/bin

MAVEN_OPTS:

-Xms256m-Xmx512m

Path:

%M2%

3,安装好Servicemix

测试:

在CMD下,Servciemix安装目录下

运行 

cdbin

servicemix

则服务器启动

在http:

//localhost:

8192/可以看到服务器已经在运行。

4,安装好Tomcat,并且配置好环境变量

5,安装好Axis2,并且配置好环境变量

注:

这里可以使用简单方式,下载Axis2的war包,直接发布到Tomcat中就可以。

8080/下检查新添加的Axis2服务

6,将ServiceArchiveWizard-EclipsePlug-in等插件装进Eclipse

这些插件不是必要的,仅仅可以使工作变得简单一些。

7,打开Eclipse并新建动态Web工程(Eclipse需要WTP插件)

输入Project名字HelloWorld,然后点击finish

8,在新建的工程中添加class

在新建的project的src中添加一个package

package名字为sample

在该包中添加一个class

Class的名字为Hello,点击Finish

修改java文件的内容如下。

9,生成wsdl文件

这里可以用CodeGeneratorWizard-EclipsePlug-in插件生成,也可以用其他插件生成,差别不大

以上两种方法都可以,第二种只要按照提示来就可以了,分别是选择class,选择生成路径

下面说第一种方法

这里如果想测试的话,就把左上条子拉到顶,点击finish

点击Operations中刚刚发布Say

输入World,看到返回值正常

10,发布webservice

发布WebService有很多种方式,可以把它直接发布Tomcat中,也可以利用Axis来发布

我们使用Axis2来发布

注意,我们要发布到Axis2中,所以我们service的address就变了,这里需要根据实际发布地址进行修改

例如本示例修改如上

1.<

wsdlsoap:

address 

location="

8080/axis2/services/HelloService"

/>

使用插件ServiceArchiveWizard-EclipsePlug-in

点击Next,然后选择Class文件的路径

点击Next,选择我们刚刚发布的wsdl

点击Next,然后来选择必要的jar包。

点击Next,勾选自动生成Service.xml

点击Next,填选Class

点击Next,填写发布路径

点击Finish,则在目标路径生成aar文件

将生成的aar文件复制到%Tomcat%/webapps/axis2/WEB-INF/services下,或者在axis2的admin页面添加该aar文件

默认的用户名是admin,密码是axis2

点击UploadService

将刚刚生成的wsdl发布

发布成功后,就可以在Service中找到刚刚发布HelloService

点击HelloService,我们就可以看到这个服务的具体内容,就是我们刚刚发布wsdl。

至此,我们成功地发布了一个webservice

*以上示例使用的是POJOs形式发布。

11,运行Servicemix

运行cmd,然后启动servicemix服务

等待服务完全开启。

当启动成功之后。

我们就可以在JDK的控制台看到关于ServiceMix的服务信息

%JDK%/bin/jconsole.exe

则我们可以找到servicemix的服务已经开启

点击连接,则我们可以看到servicemix中的所有信息,包括所有的操作及消息队列等等,在此不多述。

12,新建一个Servicemix的组件

我们的目的是WebService,所以我们建一个Cxf-bc的组件

在任意路径下建一个项目工程的目录,示例建立的是D:

/CXFHello

运行cmd,进入该目录

键入

1.mvn 

archetype:

create 

-DarchetypeGroupId=org.apache.servicemix.tooling 

-DarchetypeArtifactId=servicemix-project-root 

-DgroupId=org.apache.servicemix.tutorial 

-DartifactId=tutorial-wsdl-cxf-service

用来创建一个标准的pom.xml

在这个pom.xml中,对于一些基本的工程配置作了设定

在我们成功建立了之后,会发现CXFHello文件夹下面多出了一个路径

则我们在这个新建的路径下面运行

install

至此,我们已经将这个新建的工程发布到我们的本地Mavenrepository中

下面我们建立一个CXF-BCServiceUnit

在我们刚才建立的工程文件夹下面,运行

-DarchetypeArtifactId=servicemix-cxf-bc-service-unit 

-DgroupId=org.apache.servicemix.examples 

-DartifactId=my-cxf-bc-su

用来创建一个标准的CXF-BC-SU组件

至此,我们建议了一个标准的CXF-BC-SU组件的框子

现在进入新建的组件的文件夹。

我们看到一个pom.xml文件,这个是对这个组件进行配置的一个文件。

打开,我们可以看到详细内容

现在我们修改这个组件的名字

将<

name>

ACxfBCServiceUnit<

/name>

改成<

Cxf-Hello-SU<

然后我们需要将我们发布在Axis2上的Webservice的wsdl复制下来放入servicemix这个bc组建之中。

关于wsdl文件

打开wsdl文件,我们可以发现,wsdl其实定义了webservice的所有规范,例如它的名字,接口,方法,参数等等

而我们需要将wsdl复制到我们要发布的servicemix当中,是因为我们暴露出去的接口,方法,参数等要能和实际服务的webservice一致。

所以servicemix当中需要一个由同样接口定义的wsdl文件

访问 

http:

8080/axis2/services/HelloService?

wsdl 

得到我们刚才发布的webservice的wsdl文件

将这个wsdl文件复制到%/my-cxf-bc-su/src/main/resources 

其实这里原本就预订了一个wsdl文件的位置。

注意,我的wsdl名字叫做Hello.wsdl,因此,当复制过来后,原来的service.wsdl就可以删除了

当然,我们也可以把刚才ecilpse项目中生成的wsdl复制过来,这是一样的文件

现在我们需要修改这个复制进来的wsdl文件

将webservice服务定义作如下替换

1. 

<

wsdl:

service 

name="

HelloServiceProxy"

>

2.

3. 

port 

binding="

impl:

HelloSoapBinding"

HelloProxy"

4.

5. 

8193/HelloWorld/"

6.

7. 

/wsdl:

port>

8.

9. 

service>

结果如下图

现在我们已经完成了对wsdl的设定,现在我们需要在xbean.xml设定consumer和provider来帮定这些东西。

打开xbean.xml,作如下修改

首先,我们需要一个namespace,这个namespace要和我们引用的wsdl中的service和endpoint的namespace一致,这样我们才能准确找到service和接口

我们的wsdl定义的targetNamespace="

//sample"

所以我们bc组件中的consumer和provider定义的namespace也必须和上面一样

现在来定义consumer和provider,基本的定义规则参照:

//servicemix.apache.org/servicemix-cxf-bc.html

则最终修改好的文件如下

这里采用轻量级模式,即,将consumer和provider写在一个serviceunit内,如果想在中间加入其它程序,则可以将consumer和provider分成两个serviceunit

这样serviceunit就建好了,接下来我们建立serviceassembly

在我们的工程路目下运行

-DarchetypeArtifactId=servicemix-service-assembly 

-DartifactId=my-cxf-sa

现在可以看到工程目录中新建出来了SA的文件夹

同样,我们修改一个名字

Cxf-Hello-SA<

接下来,我们要在这个SA中注册我们刚才制作的SU

1.…… 

2. 

dependencies>

dependency>

4. 

groupId>

org.apache.servicemix.examples<

/groupId>

artifactId>

my-cxf-bc-su<

/artifactId>

6. 

version>

1.0-SNAPSHOT<

/version>

/dependency>

8. 

/dependencies>

9.……

好了现在一切就绪,我们在工程目录下面运行

就可以建立好组件了

在buildsuccessful之后,我们就可以在

%/my-cxf-sa/target

目录下面看到我们建立好的jar包

将这个jar包复制到servicemix目录下面的/hotdeploy文件夹,来正式发布到servicemix当中

如此一来,我们就成功的发布了一个服务到servicemix上

下面让我们来检测一下成果

建立一个客户端html如下

html>

2.<

head>

3.<

title>

ServiceMix 

WSDL-First 

Example<

/title>

4.<

script 

type="

text/javascript"

5.var 

urlToOpen 

"

;

//default 

URL 

to 

open

7.function 

getHTTPObject() 

{

var 

xmlhttp 

false;

9.

10. 

/* 

Compilation 

conditionnelle 

d'

IE 

*/

11. 

/*@cc_on

12. 

@if 

(@_jscript_version 

5)

13. 

try 

14. 

new 

ActiveXObject("

Msxml2.XMLHTTP"

);

15. 

catch 

(e) 

16. 

17. 

Microsoft.XMLHTTP"

18. 

(E) 

19. 

20. 

}

21. 

22. 

@else

23. 

24. 

@end 

@*/

25.

26. 

on 

essaie 

de 

cré

er 

l'

objet 

si 

ce 

n'

est 

pas 

nbsp;

fait 

27. 

if 

(!

typeof 

XMLHttpRequest 

!

'

undefined'

) 

{

28. 

29. 

XMLHttpRequest();

30. 

31. 

32. 

33. 

34.

35. 

(xmlhttp) 

36. 

finit 

qui 

doit 

se 

passer 

quand&

la 

page 

pondra 

37. 

xmlhttp.onreadystatechange=function() 

38. 

(xmlhttp.readyState 

== 

4) 

:

é

tat 

complete"

39. 

response 

document.getElementById("

response"

40. 

responseStatus 

41. 

42. 

xmlhttp.status 

43. 

44. 

ERROR 

WHILE 

RETRIEVING 

STATUS;

MAYBE 

UNABLE 

TO 

CONNECT."

45. 

46. 

response.value 

STATUS:

/n"

xmlhttp.responseText;

47. 

48. 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1