Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287987
  • 博文数量: 124
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 21
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-20 14:44
文章分类

全部博文(124)

文章存档

2020年(1)

2018年(2)

2016年(2)

2015年(6)

2014年(10)

2013年(23)

2012年(7)

2011年(18)

2010年(15)

2009年(8)

2007年(8)

2006年(23)

2005年(1)

我的朋友

分类: 云计算

2011-05-21 15:37:45

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那一步, 引擎只做最外层的解析. 对于里面的元素是否合法(拿上面的报文为例,此时并不检查部分是否合法). 并不做检查.只有等到下面在继续访问的时候,才会发现问题.
阅读(844) | 评论(0) | 转发(1) |
1

上一篇:TAO 示例解读

下一篇:在Solaris 下启动jboss

给主人留下些什么吧!~~