因为老板给的毕业题目是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. HZOI20190714 T3建造游乐场

    先放作者的正解: 先说g吧,有i个点的话,在其中i-1个点中有$C_{i-1}^{2}$种边,每个边有选和不选两种情况.如果度不是偶数呢?用剩下那个点给他连上呗.如果剩下那个点度数不是偶数呢?这是不可 ...

  2. LeetCode136 Single Number, LeetCode137 Single Number II, LeetCode260 Single Number III

    136. Single Number Given an array of integers, every element appears twice except for one. Find that ...

  3. Spring → 04:Bean(1)

    一.Bean概念 Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象. Spring 容器会自动完成@bean对象的实例化. 创建应用对象之间的协作关系的行为称为:装配( ...

  4. 【数论】不定方程&逆元&中国剩余定理

    一.不定方程 要求逆元,首先要知道什么是不定方程. 已知a,b,c,求解x,y,形如ax + by = c 的方程就是不定方程. 不定方程有两种解的情况: 1.无解 2.存在且有无限的解 那么,如何判 ...

  5. 跟我一起安装jenkins

    查看java版本 查看brew版本 升级 java brew cask install java 安装 jenkins brew install jenkins 执行 java -jar /usr/l ...

  6. Charles配置信息

    1.下载Charles https://www.charlesproxy.com/download/ 2.破解 https://www.zzzmode.com/mytools/charles/ 或者 ...

  7. ModuleNotFoundError: No module named 'tools.nnwrap' pytorch 安装

    https://pytorch.org/get-started/locally/ pytorch 主页选择后安装

  8. SDUT-3334_数据结构实验之栈与队列七:出栈序列判定

    数据结构实验之栈与队列七:出栈序列判定 Time Limit: 30 ms Memory Limit: 1000 KiB Problem Description 给一个初始的入栈序列,其次序即为元素的 ...

  9. 我为什么飞行 10000 公里去西班牙参加 KubeCon?

    2019 年 5 月 20 日至 23 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...

  10. APICloud ajax请求api数据问题

    云编译开启全局加密的情况下,请务必使用api.ajax,避免使用JQ等框架的ajax,否则将引起请求失败.官网API说明链接 还要就是要注意用$.ajax请求数据时会出现的同源策略问题.