因为老板给的毕业题目是ESB相关,需要学下ServiceMix(版本7.0.1)

但是SOA这东西技术上比较旧,加上主要是企业在用,个人学习的不多,所以资料比较少

CSDN上看到篇文章不错但是有些地方没有讲出来,自己摸索着试验成功以后把步骤记下来防止忘了2333

先附上参考资料:https://blog.csdn.net/iteye_15360/article/details/82680564

1.安装与启动

Windows下安装ServiceMix很简单,直接解压即可,没有任何其他操作,安装组件或者设置环境变量都不是必需的

启动方法:运行SERVICEMIX_HOME/bin/servicemix.bat

tips:

1)ServiceMix有热部署机制,会把deploy文件夹下的jar包自动部署为bundle,如果自己写的程序有问题想下线,只把deploy的jar包删掉是没用的(jar包已经被打包成bundle放在cache文件夹里了),必须用 bundle:uninstall <bundle_name> 命令卸载掉你的jar包

2)ServiceMix正常启动后,active的bundle数和已安装的bundle数必须一致,否则实际上启动失败,如果一直失败,可以试试解压到其他位置(我就遇到过这种情况,换个位置就好了)

2.编写简单的WebService

以IDEA为例

首先新建Project,选择 Java - Java EE - Web Application - WebServices

Version无所谓,Axis需要的包少一些,先选择这个。然后一路Next。

项目建立后自带一个HelloWorld

运行项目需要Tomcat等容器,以Tomcat为例:

点击右上角 Add Configuration… - 弹出窗口左上角+号 - Tomcat Server - Local ,如果此前在IDEA里配置过Tomcat,IDE会帮你自动填写信息,否则需要选定你的Tomcat安装路径

此时会提示No artifacts configured之类的错误,选择Fixed,可以自动创建(建议这里把Application context设置为根路径,即"/")

然后进入菜单: File - Project Structure -Artifacts,会提示Library is missing 啥的,同样点Fix

在弹出的菜单中选择第一项:Add 'JAX-WS-Apache Axis' to the artifact

然后就可以运行程序了。Tomcat启动后,可以进入 localhost:8080/services查看WebService列表(8080是默认端口,上下文路径之前配置为根路径,否则应该是 localhost:port/<application_context>/services)

然后就可以使用IDEA自带的功能生成WSDL了,方法很简单:(这里不需要生成)

在HelloWorld.java上右键 Webservices - Generate wsdl from Java Code ,在WebService URL一栏填入HelloWorld的地址(点击上图中最下面的wsdl,在新标签页中复制url,并把末尾的"?wsdl"去掉即可)

3.编写Camel应用

新建一个空Maven项目,在resource文件夹下建立META-INF/spring/camel-config.xml文件(没有就自己建立resource目录,记得标记为资源目录)

内容:


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:camel="http://camel.apache.org/schema/spring"
  5. xmlns:cxf="http://camel.apache.org/schema/cxf"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  10. http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
  11. http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
  12. <cxf:cxfEndpoint id="reportIncident"
  13. address="http://0.0.0.0:8186/IHello"
  14. serviceName="s:HelloWorldService"
  15. endpointName="s:HelloWorld"
  16. wsdlURL="http://localhost:8080/services/HelloWorld?wsdl"
  17. xmlns:s="http://example"/>
  18. <camelContext xmlns="http://camel.apache.org/schema/spring">
  19. <endpoint id="callRealWebService" uri="http://localhost:8080/services/HelloWorld?bridgeEndpoint=true"/>
  20. <route>
  21. <from uri="cxf:bean:reportIncident?dataFormat=MESSAGE"/>
  22. <setHeader headerName="SOAPAction" >
  23. <constant>FooSync</constant>
  24. </setHeader>
  25. <convertBodyTo type="String" />
  26. <to ref="callRealWebService"/>
  27. </route>
  28. </camelContext>
  29. </beans>

cxfEndpoint的address属性可以根据喜好修改

如果上一步使用HelloWorld示例的话,该配置可以直接套用

endpoint的uri和webservice uri一致,必须添加"?bridgeEndpoint=true",意思是打开桥接端点(否则无法转发)

这里IDEA可能会提示 “Application context not configured for this file”,不用管它

配置完直接使用 mvn install 打包即可

4.部署到ServiceMix

由于这里使用了http协议的服务,需要先安装camel-http插件,否则直接部署的话会报错:

No componentfound with scheme: http

方法:启动ServiceMix,在控制台输入 feature:install camel-http

然后把maven打包好的jar包放进SERVICEMIX_HOME/deploy目录下,控制台如果没报错就说明已经正常部署了(可以用bundle:list看看是否部署)

在浏览器输入 http://localhost:8186/IHello?wsdl 能够成功访问即说明配置成功

也可以把wsdl保存下来,生成客户端文件进行测试,如下图:

原文地址:https://blog.csdn.net/u010670411/article/details/85097218

初学ServiceMix的更多相关文章

  1. DDD初学指南

    去年就打算总结一下,结果新换的工作特别忙,就迟迟没有认真动手.主要内容是很多初学DDD甚至于学习很长时间的同学没有弄明白DDD是什么,适合什么情况.这世界上没有银弹,抛开了适合的场景孤立的去研究DDD ...

  2. gulp初学

    原文地址:gulp初学 至于gulp与grunt的区别,用过的人都略知一二,总的来说就是2点: 1.gulp的gulpfile.js  配置简单而且更容易阅读和维护.之所以如此,是因为它们的工作方式不 ...

  3. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

  4. 初学Vue2.0--基础篇

    概述: 鉴于本人初学,使用的编译器是webStorm,需添加对VUE的支持,添加方法可以参考 http://www.jianshu.com/p/142dae4f8b51. 起步: 1. 扎实的 Jav ...

  5. 初学Python

    初学Python 1.Python初识 life is short you need python--龟叔名言 Python是一种简洁优美语法接近自然语言的一种全栈开发语言,由"龟叔&quo ...

  6. Javascript初学篇章_5(对象)

    对象 Javascript是一种面向对象的语言,因此可以使用面向对象的思想来进行javascript程序设计对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体.举个例子,一只猫是个对象, ...

  7. 初学Objective-C语言需要了解的星星点点

             其实大多数开发初学者都有一些相同的特点,可以说是一种“职业病”.Most有其他平台开发基础的初学者,看到Xcode就想摩拳擦掌:看到Interface Builder就想跃跃欲试:而 ...

  8. matlab初学之句柄

    文章出处:http://www.cnblogs.com/CBDoctor/archive/2012/04/06/2434072.html 在matlab中,每一个对象都有一个数字来标识,叫做句柄.当每 ...

  9. 初学HTML5、初入前端

    学习HTML5是一个漫长的过程,当中会遇到很多技术与心态上的变化.刚开始学习,我们不能发力过猛,需要一个相对稳定的状态去面对.多关注一些自己感兴趣的网站和技术知识,建立自己的信心与好奇心,为以后的学习 ...

随机推荐

  1. 阿里云王广芳:5G时代,我们需要怎样的边缘计算?

    7月24日阿里云峰会开发者大会的IT基础设施云化专场中,阿里云边缘计算高级技术专家王广芳进行了边缘节点服务重大升级发布,同时与现场观众一同探讨了5G时代边缘计算的思考与技术实践. 5G时代,我们需要怎 ...

  2. Oracle 定义变量总结

    首先,当在cmd里办入scott密码提示错误时,可以这样改一下,scott的解锁命令是: 以system用户登录:cmdsqlplus system/tigertigeralter user scot ...

  3. QT 引用之前项目模板导致计算速度严重下降

    最近做RRT规划算法,在新建工程中测试时,每一个周期大概花费20MS,但是当我把算法移植到之前写的工程模板中时,计算效率相当低,变为500毫秒.期初是以为代码有问题,然后就逐句查找,发现代码并没有问题 ...

  4. Android EditText____TextchangedListener

    今天在做APP的时候有个需求: EditText 动态监听内容变化如果长度为6时(就是看是不是验证码) 判断是否正确 正确就跳到下一个Activity,但是在Activity.finish()的时候, ...

  5. PHP笔试题(11道题)详解

    题目一 <?php echo -10%3; ?> 答案:-1. 考查:优先级. 因为-的优先级比%求余的优先级低, 也就是-(10%3). 2 题目二: print (int)pow(2, ...

  6. Pytorch的网络结构可视化(tensorboardX)(详细)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xiaoxifei/article/det ...

  7. Python基础:25文件

    一:文件对象 文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 一旦设置了合适的"钩子", 你就可以访问具有文件类型接 ...

  8. IOS开发之UISearchBar自定义外观

      MySearchBar.h如下: @interface MySearchBar : UISearchBar - (void)layoutSubviews; @end MySearchBar.m如下 ...

  9. Project Euler Problem 23-Non-abundant sums

    直接暴力搞就行,优化的地方应该还是计算因子和那里,优化方法在这里:http://www.cnblogs.com/guoyongheng/p/7780345.html 这题真坑,能被写成两个相同盈数之和 ...

  10. poj 2689 Prime Distance (素数二次筛法)

    2689 -- Prime Distance 没怎么研究过数论,还是今天才知道有素数二次筛法这样的东西. 题意是,要求求出给定区间内相邻两个素数的最大和最小差. 二次筛法的意思其实就是先将1~sqrt ...