使用Apache ODE编排在azure中部署的Web服务时出错

时间:2013-05-09 14:52:21

标签: azure xsd wsdl bpel apache-ode

我正在尝试使用Apache ODE编排部署在Windows Azure中的Web服务。我正在使用Eclipse集成的Web Service Explorer测试服务。 Azure WS工作正常,但是当我测试Artifacts.wsdl时,它会抛出以下错误:

14:41:38,777 INFO  [DeploymentPoller] Deployment of artifact BPEL_process successful: [{http://artifacts}process-132]
14:41:49,474 WARN  [SimpleScheduler] Dispatching jobs with more than 5 minutes delay. Either the server was down for some time or the job load is greater than available capacity
14:41:57,594 WARN  [ExternalService] Fault response: faultType=(unkown)
<?xml version='1.0' encoding='utf-8'?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode><faultstring xml:lang="en-US">The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the &lt;serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.</faultstring></s:Fault></s:Body></s:Envelope>
14:41:57,620 ERROR [INVOKE] Failure during invoke: 
14:41:57,623 INFO  [BpelRuntimeContextImpl] ActivityRecovery: Registering activity 15, failure reason:  on channel 27

以下是文件:

process.bpel

Artifacts.wsdl

mod2.wsdl

mod2.xsd

编辑这是我在网络服务中添加IncludeExceptionDetailInFaults时得到的结果:

17:51:49,762 WARN  [ExternalService] Fault response: faultType=(unkown)
<?xml version='1.0' encoding='utf-8'?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode><faultstring xml:lang="en-US">Object reference not set to an instance of an object.</faultstring><detail><axis2ns1:ExceptionDetail xmlns:axis2ns1="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><axis2ns1:HelpLink i:nil="true" /><axis2ns1:InnerException i:nil="true" /><axis2ns1:Message>Object reference not set to an instance of an object.</axis2ns1:Message><axis2ns1:StackTrace>   at WCFServiceWebRole1.AzureImpl.mod2(String arg0)&#xd;
   at SyncInvokemod2(Object , Object[] , Object[] )&#xd;
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]&amp; outputs)&#xd;
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)&#xd;
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)&#xd;
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)&#xd;
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</axis2ns1:StackTrace><axis2ns1:Type>System.NullReferenceException</axis2ns1:Type></axis2ns1:ExceptionDetail></detail></s:Fault></s:Body></s:Envelope>
17:51:49,798 ERROR [INVOKE] Failure during invoke: 
17:51:49,801 INFO  [BpelRuntimeContextImpl] ActivityRecovery: Registering activity 15, failure reason:  on channel 27

仍然不知道这意味着什么。 Eclipse在我的bpel文件中指出了错误。 <copy>下的<assign>代码会抛出:

The from-spec of "<xs:simpleType "string">" is not compatible with to-spec of "<xs:complexType>"但我忽略了它,因为遵循xsd架构对我来说没有意义,有时它甚至会消失。

编辑II:

正如@vanto所提到的,<assign>活动是错误的。我必须将我的wsdl命名空间的前缀添加到CDATA标记:

<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
  <![CDATA[mod2:mod2Result]]>
</bpel:query>

仍然没有完全了解和名称空间,但它似乎与我必须将elementFormDefault="qualified"添加到由Azure服务的wsdl导入的xsd这一事实有关。

1 个答案:

答案 0 :(得分:1)

错误意味着ODE得到了肥皂故障作为回应。这表明调用的Web服务引发了异常。请检查Web服务的日志或打开IncludeExceptionDetailInFaults功能,以获取有关出错的详细信息。请注意,ODE不会验证外发邮件,因此如果您的<assign>活动未创建正确的请求,ODE将不会注意到,但调用的服务可能会抱怨。