0. 数据库!
bpel使用哪个数据库是在deploy的时候指定的.
但是实际数据库中表的生成是在jboss启动的过程中创建的.
因此要想在mysql中部署bpel,首先需要在mysql中手工创建riftsaw数据库, 否则就会无法连接,当然表的创建就无法成功!
1. 首次错误为:
Failed to invoke BPEL process: Unable to find operation for element {}process
修改:在soap:binding style="rpc"字段修改style为"rpc"原来为document.
然后错误为:
>Failed to invoke BPEL process: Expected part wrapper 'process'missing on service:{}first_bpel/first_bpelPort
再次修改了另一个rpc,但是整个程序出错!
1. soap:binding style="rpc"是必须的.
2. soap:body中的namespace是必须的.该namespace值必须与message类型所定义的namespace.(而eclipse自动生成的部分没有该内容)
有了这两个后好像可以调用了!
但是还继续报错! 不知道还少什么!
现在的错误如下:
Failed to invoke BPEL process: Expected part wrapper '{}process' missing on service:{}HelloWorld/HelloWorldPort
3. 修改了
字段中的element为type
4. 复杂类型的传递:
对于该类型,应该如下写soap:
wanjmdddd 此处的wsdl定义为上面的SendHello_BPELRequest所在的namespace
变量为了能够成功使用query2.0语言访问,需要先初始化.
示例如下:
xmlns:tns="" xmlns:xsi=""> fffff 其中out是tns:test_bpelResponseMessage类型.test_bpelResponseMessage的定义为:
test_bpelRequst的定义为:
bpel中的style="rpc|document"
这定义最后发送请求时报文的封装格式.
当其等于rpc时:本文需要封装在 操作名 为element的元素中.
而当document时. 则只要是消息封装就可以了,详细情况请搜索the difference between rpc 和document.
所以在引用另外一个wsdl时,请不要修改其中的style. 这个bpel引擎会自动去调用.而从应用过程中来看,jboss的bpel只支持rpc格式!.
今天重新试了一下, jboss的bpel也是支持document格式的.只是只要对消息进行封装就可以了.此时不需要namespace和style的修改.
对于上面的复杂结构, 只需要写为:
<wsdl: input>wanjmddddwsdl: input> (调用bpel是需要红字,而调用wsdl则不要) 也就是说在rpc时, 需要在消息的外面在封装上
.其他的相同. 此处还有一个奇怪的发现就是. 理论上调用bpel和调用wsdl的一个operation, 报文的格式应该是相同的.但是通过测试发现. 对于上面的报文如果是调用wsdl的话.input前后的wsdl应该去掉, 否则jboss会报错.奇怪同样的一个程序,怎么会进行不同的处理. 经测试发现, bpel主动调用bpel时, 采用 的形式出现.这是由wsdl中schema的elementFormDefault值决定. 当值为qualified时, 需要些红色部分的前缀, 否则不写.elementFormDefault默认是unqulified,所以默认不写. 其实在recv那一步, 引擎只做最外层的解析. 对于里面的元素是否合法(拿上面的报文为例,此时并不检查部分是否合法). 并不做检查.只有等到下面在继续访问的时候,才会发现问题.
阅读(820) | 评论(0) | 转发(1) |