This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 123890 - Fault Handler
Summary: Fault Handler
Status: RESOLVED INVALID
Alias: None
Product: soa
Classification: Unclassified
Component: BPEL Project (show other bugs)
Version: 6.x
Hardware: All All
: P1 blocker (vote)
Assignee: Kirill Sorokin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-12-12 15:07 UTC by kfarmah
Modified: 2008-01-30 17:54 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
NB Project (508.87 KB, application/x-compressed)
2007-12-12 15:08 UTC, kfarmah
Details
Sample SOAP message returned from WS (6.26 KB, text/plain)
2007-12-12 15:11 UTC, kfarmah
Details
Sample SOAP message XSD returned from WS (2.86 KB, text/plain)
2007-12-12 15:12 UTC, kfarmah
Details
NB Project CORRECT Zip ! (508.39 KB, application/octet-stream)
2007-12-12 16:17 UTC, kfarmah
Details
ImpactMessengerException BPEL (19.79 KB, text/plain)
2007-12-12 17:29 UTC, kfarmah
Details
Integration3 zip (516.01 KB, application/octet-stream)
2007-12-26 15:02 UTC, kfarmah
Details
Isolated test-case (102.72 KB, application/x-compressed)
2008-01-22 15:22 UTC, Kirill Sorokin
Details
Corrected isolated test-case (94.97 KB, application/x-compressed)
2008-01-30 17:51 UTC, Kirill Sorokin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description kfarmah 2007-12-12 15:07:33 UTC
Hi,

I am trying to use a Fault Handler to log errors from a web service 
call to a database table in BPEL.
I am calling a webservice to update something and using a Fault 
Handler-Catch to trap an exception and write the contents to the soap 
message to a database table.

The returned SOAP message from the failed webservice update is 
attached, as is the XSD for this message Part.

I am finding that the Catch does not trap the soap error event thought 
the Fault Variable Type as been define as the same as the returned 
soap error.

The only way to trap the fault is to use the CatchAll, which does not 
allow me to trap the contents and process the error so that I can 
write it to a database table.

Is there any way to trap such messages using the catch, or even the 
catch-all so that I can process the contents of the error appropriately.

Thanks
Kam
Comment 1 kfarmah 2007-12-12 15:08:10 UTC
Created attachment 54201 [details]
NB Project
Comment 2 kfarmah 2007-12-12 15:11:37 UTC
Created attachment 54202 [details]
Sample SOAP message returned from WS
Comment 3 kfarmah 2007-12-12 15:12:52 UTC
Created attachment 54203 [details]
Sample SOAP message XSD returned from WS
Comment 4 kfarmah 2007-12-12 16:17:46 UTC
Created attachment 54206 [details]
NB Project CORRECT Zip !
Comment 5 kfarmah 2007-12-12 16:19:41 UTC
Please use the Integrationv2.zip.
The previous zip was taken whilst I was trying to problem solve the Fault handler issue.

Sorry for the confusion and many thanks in advance.
Kam
Comment 6 kfarmah 2007-12-12 17:29:05 UTC
Some additional comments for when you look at the project:
The web service I am calling is CreateImpactPatient. This returns a createPatientReponse or one or more faults (as
defined in the patients.wsdl).
I have defined my Catch-FH as ImpactMessengerException, and the same type is defined for the variable.
(Uploaded as Integration.bpel attachment)
This in theory should catch the returned fault (the returned soap message is soap error.xml), so that I can process the
contents of the message.  As I understand it should just be a simple case of doing this.

This did not work, so I reversed engineered the soap error message being return from the web service (soap-error.xsd)
and created a message type to use in the Catch-FH.
This did not work either, and hence the reason for raising this issue.
Comment 7 kfarmah 2007-12-12 17:29:55 UTC
Created attachment 54207 [details]
ImpactMessengerException BPEL
Comment 8 Sergey Lunegov 2007-12-13 06:57:41 UTC
Kirill, please look at this. Probably the issue is on the runtime side but we need to investigate.
Comment 9 kfarmah 2007-12-17 10:43:48 UTC
Hi, 
I am changing the priority of this issue if I may as it a blocking issue for the project I am working on.
Thanks in advance.
Kam
Comment 10 prashantbhagat 2007-12-20 02:58:13 UTC
kfarmah,
When I try to deploy this project (Integrationv2.zip) I get an exception. Can you please correct this problem and 
attach the project again? Thanks.

    * Component: sun-bpel-engine
      ERROR: (BPELSE) Service unit IntegrationApplication-Integration failed to load deployment C:\open-
esb\glassfish\domains\domain1\jbi\service-assemblies\IntegrationApplication\IntegrationApplication-Integration\sun-
bpel-engine :Error while loading BPEL file C:\open-esb\glassfish\domains\domain1\jbi\service-
assemblies\IntegrationApplication\IntegrationApplication-Integration\sun-bpel-engine\Integration.bpel, Exception 
details are Cannot parse BPEL (see below):
==> Cannot load imported document  (see below):
==> Unable to import wsdl document for import  (see below):
==> Failed to resolve publicId http://enterprise.netbeans.org/bpel/patientsWrapper and systemId 
localhost_8080/integration/patientsWrapper.wsdl to a WSDLDocument. (see below):
==> Failed to parser xsd document file:/C:/open-esb/glassfish/domains/domain1/jbi/service-
assemblies/IntegrationApplication/IntegrationApplication-Integration/sun-bpel-
engine/localhost_8080/integration/patientsWrapper.wsdl (see below):
==> WSDLException (at /definitions/import/definitions/types/xsd:schema): faultCode=OTHER_ERROR: An error occurred 
trying to resolve schema referenced at 'http://localhost:8080/integration/patients?xsd=1', relative to 'file:/C:/open-
esb/glassfish/domains/domain1/jbi/service-assemblies/IntegrationApplication/IntegrationApplication-Integration/sun-
bpel-engine/localhost_8080/integration/patients.wsdl'.: java.io.FileNotFoundException: This file was not found: 
http://localhost:8080/integration/patients?xsd=1
BUILD FAILED (total time: 2 seconds)
Comment 11 kfarmah 2007-12-21 13:14:43 UTC
Hi Prashant,

It appears from the stacktrace that NB is trying to resolve a XSD from http://localhost:8080/integration/patients?xsd=1
ie localhost which will not be accessible from your machine.
The XSD for this can be also found in src\localhost_8080\integration\patients.xsd_1.xsd in the Integrationv2.zip.
The patients.wsdl contains the schema location that the error refers to:
  <types>
    <xsd:schema>
      <xsd:import namespace="http://patients.services.ctms.perceptive.com/"
schemaLocation="http://localhost:8080/integration/patients?xsd=1"/>
    </xsd:schema>
  </types>

Should I make this change and re-attach or are you OK to make the simple change?
Also You will probably not be able to run the Test case since the web services I am consuming are not externally
accessible from outside the corporate firewall I am working behing.
Please let me know and I will do as you request.

Thanks
K
Comment 12 Kirill Sorokin 2007-12-21 16:24:46 UTC
kfarmah,

The fault handler is set to process faults of type ns13:getSoapException (which is
{http://j2ee.netbeans.org/wsdl/Integration}getSoapException). It is defined *as a message* in integrationWSDL.wsdl and
references ns1:Envelope ({http://schemas.xmlsoap.org/soap/envelope/}Envelope) element as its only part.

The soap-error.xml file that you've attached contains a complete SOAP envelope with a fault. My understanding is that
you cannot reference the SOAP envelope completely as it's parsed long before it gets to the BPEL process. Could you
please try to set the fault type to {http://schemas.xmlsoap.org/soap/envelope/}Fault element? Even then, I guess the
fault itself is parsed before and you need to go deeper to get its data.

Moreover, I was not able to run the attached example, as the services it references, are not (as far as I understand)
publicly available on the network. Is there, by any chance, a possibility for you to attach a simple isolated (i.e.
without no external dependencies) example, which illustrates the same erroneous behavior?
Comment 13 kfarmah 2007-12-26 15:00:54 UTC
Hi ksorokin  

I think you are using the wrong project zip.
ns13:getSoapException was from the first zip and I was trying to problem solve the issue I was having by reverse
engineering the soap response envelope.

The correct behaviour can be found in the integration2.zip.
A call to a webservice is made : CreateImpactPatient (PartnerLink - ImpactPatients).
This call either returns createPatientResponse or one or more faults including ImpactMessengerException (which is the
fault being sent by the web service (soap_error.xml is the example of the ImpactMessengerException fault).
It is this fault I can trying to catch which does not seem to work.

I have reattached the project again as Integration3.zip - please use this.

Thanks
Kam
Comment 14 kfarmah 2007-12-26 15:02:05 UTC
Created attachment 54510 [details]
Integration3 zip
Comment 15 kfarmah 2007-12-26 15:06:21 UTC
Sorry I forgot to add I am not sure that I can create an isolated test case since I have no way of generating the fault
other than calling the dependant web service.
Comment 16 kfarmah 2008-01-07 11:58:52 UTC
Hi,

Have you had chance to take at look at the issue following my recent comments?

Thanks
Kam
Comment 17 Kirill Sorokin 2008-01-22 15:22:30 UTC
Created attachment 55376 [details]
Isolated test-case
Comment 18 Kirill Sorokin 2008-01-22 15:35:27 UTC
Sorry for the lengthy silence..

I have attached a more clean and isolated test-case for the problem. It consists consists of a web-service which is
called twice from a BPEL process. In the first case it throws a "declared and expected" fault, which can be successfully
catched in a <catch> unit. In the second case the service throws an undeclared runtime exception, which cannot be
handled by BPEL in any way except <catchAll>, which, obviously loses all semantics of the fault. The fault output can be
seen in the output of the Service_UglyFault test-case of the composite app.

As far as I understand, this is essentially the same issue, as in the original attachments. Kfarmah, could you please
confirm this? (In the future, please do attach samples that can be actually run. It is rather difficult to investigate
without having a runnable test-case for the issue).

Kiran, Prashant, I've debugged the inner workings of BPEL SE wrt this issue and found that tracks lead deep into JBI
itself. In other words, the fault message which is passed to Engine.process(InComingEventKeyImpl, MessageContainer) is
already empty and does not have any information about the fault data. This is due to
EngineHelper.createWSMessage(NormalizedMessage, RBPELProcess, boolean) returning null, as the normalized messaged is not
properly WSDL1.1-wrapped. The latter is called from BPELSEInOutThread.processResponse(InOut).

From this point I'm not sure where to proceed. Could you please send some light on this behavior? Is it by design or it
is an issue in BPEL SE/ OpenESB? 

Thanks.
Comment 19 kfarmah 2008-01-22 15:44:37 UTC
Sorry for the multiple attachments and yes I believe it is the same issue.
Comment 20 kiran_bhumana 2008-01-22 19:57:26 UTC
Looks like the user wants to catch a defined fault and it seems to be working. So there is no bug from that perspective!

To catch the faults/errors not defined on the WSDLs users need to catch systemFaults. refer
http://wiki.open-esb.java.net/Wiki.jsp?page=UsingSystemFault. If you do that does it work?

Kiran B
Comment 21 kfarmah 2008-01-23 11:06:32 UTC
Err....have I missed something here?
The fault I am trying to catch is on the WSDL, but is not being handled by the Catch fault handler:
Here is an extract of the WSDL:
  <message name="ImpactMessengerException">
    <part name="fault" element="tns:ImpactMessengerException"/>
  </message>

Kam
Comment 22 prashantbhagat 2008-01-23 22:55:54 UTC
From the file IZ123890Service.wsdl it seems that you have defined only one fault - "NormalFault" for the operation 
named "operation". Did you miss adding the "UglyFault" as a valid fault?

    <portType name="IZ123890">
        <operation name="operation">
            <input message="tns:operation"></input>
            <output message="tns:operationResponse"></output>
            <fault message="tns:NormalFault" name="NormalFault"></fault>
        </operation>
    </portType>
Comment 23 Kirill Sorokin 2008-01-24 04:30:43 UTC
No, Prashant, that was intentional. The very point of the issue (as I see it) is to be able to catch a fault which was
not declared in a <catch> block, without losing the semantics of the fault. This does not seem to be possible.
Comment 24 kiran_bhumana 2008-01-24 18:31:38 UTC
I think there seems to be some misunderstanding. let me see if I got it correct. Kam seems to say that a WSDL operation
has a fault defined. The invoke operation (invoked service) threw the fault defined. There is a catch defined for this
fault, around the invoke's scope. Still the runtime didn't reach the catch block.

is that correct Kam?



Comment 25 kfarmah 2008-01-24 21:17:07 UTC
Yes that is correct.
Comment 26 kiran_bhumana 2008-01-24 22:28:15 UTC
Ok thats good. This is a very basic scenario and should be working. We have quite a few test cases for that as well. I
am suspecting this could be a user error. How does your catch block look like? How is your WSDL? Could you please paste
them here, if they are simple. 
Comment 27 Kirill Sorokin 2008-01-25 08:28:50 UTC
Yeah, there is definitely some misunderstanding. :)

As far as I understood, the fault thrown was not originally defined in the PL's WSDL. The fault's contents are attached
as soap_error.xml. Note that the fault contains only the JAX-WS standard fields and absolutely no user-defined data. In
the test-case I had attached such fault can be achieved when the PL service throws an undeclared exception.

The user, seeing this fault happening, tried to reverse-engineer the fault and add its declaration to PLs WSDL, to be
able to handle it properly in a <catch> block. It did not work however. I tried to do the same with my test-case
(catching UglyFault in a <catch> block) -- did not work for me either.

I tried debugging the runtime to find out what's happening and noted that the fault message that BPEL SE receives is
already empty -- all data is filtered out by BPEL JBI adapter. It is filtered because the message it received is not
properly wrapped by the underlying OpenESB. I provided more detailed in one of the comments above. And, as I do not know
how to proceed with debugging this further I cried for help from the runtime side. ;)
Comment 28 kfarmah 2008-01-25 10:31:53 UTC
Hi the WSDL is quite large:

<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS
RI 2.1.2-hudson-181-RC1. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI
2.1.2-hudson-181-RC1. --><definitions
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://patients.services.ctms.perceptive.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://patients.services.ctms.perceptive.com/"
name="PatientServiceImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://patients.services.ctms.perceptive.com/"
schemaLocation="http://localhost:8080/integration/patients?xsd=1"></xsd:import>
</xsd:schema>
</types>
<message name="createPatient">
<part name="parameters" element="tns:createPatient"></part>
</message>
<message name="createPatientResponse">
<part name="parameters" element="tns:createPatientResponse"></part>
</message>
<message name="ImpactMessengerException">
<part name="fault" element="tns:ImpactMessengerException"></part>
</message>
<message name="InfrastructureException">
<part name="fault" element="tns:InfrastructureException"></part>
</message>
<message name="StaleRecordException">
<part name="fault" element="tns:StaleRecordException"></part>
</message>
<message name="IllegalAccessException">
<part name="fault" element="tns:IllegalAccessException"></part>
</message>
<message name="NoSuchMethodException">
<part name="fault" element="tns:NoSuchMethodException"></part>
</message>
<message name="Exception">
<part name="fault" element="tns:Exception"></part>
</message>
<message name="createListOfPatients">
<part name="parameters" element="tns:createListOfPatients"></part>
</message>
<message name="createListOfPatientsResponse">
<part name="parameters" element="tns:createListOfPatientsResponse"></part>
</message>
<message name="getPatientsByTrialUnit">
<part name="parameters" element="tns:getPatientsByTrialUnit"></part>
</message>
<message name="getPatientsByTrialUnitResponse">
<part name="parameters" element="tns:getPatientsByTrialUnitResponse"></part>
</message>
<message name="deletePatient">
<part name="parameters" element="tns:deletePatient"></part>
</message>
<message name="deletePatientResponse">
<part name="parameters" element="tns:deletePatientResponse"></part>
</message>
<message name="updatePatient">
<part name="parameters" element="tns:updatePatient"></part>
</message>
<message name="updatePatientResponse">
<part name="parameters" element="tns:updatePatientResponse"></part>
</message>
<message name="getPatientsByUniqueNumber">
<part name="parameters" element="tns:getPatientsByUniqueNumber"></part>
</message>
<message name="getPatientsByUniqueNumberResponse">
<part name="parameters" element="tns:getPatientsByUniqueNumberResponse"></part>
</message>
<message name="checkPatientExistsByUniqueNo">
<part name="parameters" element="tns:checkPatientExistsByUniqueNo"></part>
</message>
<message name="checkPatientExistsByUniqueNoResponse">
<part name="parameters" element="tns:checkPatientExistsByUniqueNoResponse"></part>
</message>
<message name="checkPatientExistsByPatientDetails">
<part name="parameters" element="tns:checkPatientExistsByPatientDetails"></part>
</message>
<message name="checkPatientExistsByPatientDetailsResponse">
<part name="parameters" element="tns:checkPatientExistsByPatientDetailsResponse"></part>
</message>
<portType name="PatientServiceImpl">
<operation name="createPatient">
<input message="tns:createPatient"></input>
<output message="tns:createPatientResponse"></output>
<fault message="tns:ImpactMessengerException" name="ImpactMessengerException"></fault>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
<fault message="tns:StaleRecordException" name="StaleRecordException"></fault>
<fault message="tns:IllegalAccessException" name="IllegalAccessException"></fault>
<fault message="tns:NoSuchMethodException" name="NoSuchMethodException"></fault>
<fault message="tns:Exception" name="Exception"></fault>
</operation>
<operation name="createListOfPatients">
<input message="tns:createListOfPatients"></input>
<output message="tns:createListOfPatientsResponse"></output>
<fault message="tns:ImpactMessengerException" name="ImpactMessengerException"></fault>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
<fault message="tns:StaleRecordException" name="StaleRecordException"></fault>
<fault message="tns:IllegalAccessException" name="IllegalAccessException"></fault>
<fault message="tns:NoSuchMethodException" name="NoSuchMethodException"></fault>
<fault message="tns:Exception" name="Exception"></fault>
</operation>
<operation name="getPatientsByTrialUnit">
<input message="tns:getPatientsByTrialUnit"></input>
<output message="tns:getPatientsByTrialUnitResponse"></output>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
<fault message="tns:IllegalAccessException" name="IllegalAccessException"></fault>
<fault message="tns:NoSuchMethodException" name="NoSuchMethodException"></fault>
<fault message="tns:Exception" name="Exception"></fault>
</operation>
<operation name="deletePatient">
<input message="tns:deletePatient"></input>
<output message="tns:deletePatientResponse"></output>
<fault message="tns:ImpactMessengerException" name="ImpactMessengerException"></fault>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
<fault message="tns:StaleRecordException" name="StaleRecordException"></fault>
<fault message="tns:IllegalAccessException" name="IllegalAccessException"></fault>
<fault message="tns:NoSuchMethodException" name="NoSuchMethodException"></fault>
<fault message="tns:Exception" name="Exception"></fault>
</operation>
<operation name="updatePatient">
<input message="tns:updatePatient"></input>
<output message="tns:updatePatientResponse"></output>
<fault message="tns:ImpactMessengerException" name="ImpactMessengerException"></fault>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
<fault message="tns:StaleRecordException" name="StaleRecordException"></fault>
<fault message="tns:IllegalAccessException" name="IllegalAccessException"></fault>
<fault message="tns:NoSuchMethodException" name="NoSuchMethodException"></fault>
<fault message="tns:Exception" name="Exception"></fault>
</operation>
<operation name="getPatientsByUniqueNumber">
<input message="tns:getPatientsByUniqueNumber"></input>
<output message="tns:getPatientsByUniqueNumberResponse"></output>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
<fault message="tns:IllegalAccessException" name="IllegalAccessException"></fault>
<fault message="tns:NoSuchMethodException" name="NoSuchMethodException"></fault>
<fault message="tns:Exception" name="Exception"></fault>
</operation>
<operation name="checkPatientExistsByUniqueNo">
<input message="tns:checkPatientExistsByUniqueNo"></input>
<output message="tns:checkPatientExistsByUniqueNoResponse"></output>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
</operation>
<operation name="checkPatientExistsByPatientDetails">
<input message="tns:checkPatientExistsByPatientDetails"></input>
<output message="tns:checkPatientExistsByPatientDetailsResponse"></output>
<fault message="tns:InfrastructureException" name="InfrastructureException"></fault>
</operation>
</portType>
<binding name="PatientServiceImplPortBinding" type="tns:PatientServiceImpl">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
<operation name="createPatient">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="ImpactMessengerException">
<soap:fault name="ImpactMessengerException" use="literal"></soap:fault>
</fault>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
<fault name="StaleRecordException">
<soap:fault name="StaleRecordException" use="literal"></soap:fault>
</fault>
<fault name="IllegalAccessException">
<soap:fault name="IllegalAccessException" use="literal"></soap:fault>
</fault>
<fault name="NoSuchMethodException">
<soap:fault name="NoSuchMethodException" use="literal"></soap:fault>
</fault>
<fault name="Exception">
<soap:fault name="Exception" use="literal"></soap:fault>
</fault>
</operation>
<operation name="createListOfPatients">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="ImpactMessengerException">
<soap:fault name="ImpactMessengerException" use="literal"></soap:fault>
</fault>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
<fault name="StaleRecordException">
<soap:fault name="StaleRecordException" use="literal"></soap:fault>
</fault>
<fault name="IllegalAccessException">
<soap:fault name="IllegalAccessException" use="literal"></soap:fault>
</fault>
<fault name="NoSuchMethodException">
<soap:fault name="NoSuchMethodException" use="literal"></soap:fault>
</fault>
<fault name="Exception">
<soap:fault name="Exception" use="literal"></soap:fault>
</fault>
</operation>
<operation name="getPatientsByTrialUnit">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
<fault name="IllegalAccessException">
<soap:fault name="IllegalAccessException" use="literal"></soap:fault>
</fault>
<fault name="NoSuchMethodException">
<soap:fault name="NoSuchMethodException" use="literal"></soap:fault>
</fault>
<fault name="Exception">
<soap:fault name="Exception" use="literal"></soap:fault>
</fault>
</operation>
<operation name="deletePatient">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="ImpactMessengerException">
<soap:fault name="ImpactMessengerException" use="literal"></soap:fault>
</fault>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
<fault name="StaleRecordException">
<soap:fault name="StaleRecordException" use="literal"></soap:fault>
</fault>
<fault name="IllegalAccessException">
<soap:fault name="IllegalAccessException" use="literal"></soap:fault>
</fault>
<fault name="NoSuchMethodException">
<soap:fault name="NoSuchMethodException" use="literal"></soap:fault>
</fault>
<fault name="Exception">
<soap:fault name="Exception" use="literal"></soap:fault>
</fault>
</operation>
<operation name="updatePatient">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="ImpactMessengerException">
<soap:fault name="ImpactMessengerException" use="literal"></soap:fault>
</fault>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
<fault name="StaleRecordException">
<soap:fault name="StaleRecordException" use="literal"></soap:fault>
</fault>
<fault name="IllegalAccessException">
<soap:fault name="IllegalAccessException" use="literal"></soap:fault>
</fault>
<fault name="NoSuchMethodException">
<soap:fault name="NoSuchMethodException" use="literal"></soap:fault>
</fault>
<fault name="Exception">
<soap:fault name="Exception" use="literal"></soap:fault>
</fault>
</operation>
<operation name="getPatientsByUniqueNumber">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
<fault name="IllegalAccessException">
<soap:fault name="IllegalAccessException" use="literal"></soap:fault>
</fault>
<fault name="NoSuchMethodException">
<soap:fault name="NoSuchMethodException" use="literal"></soap:fault>
</fault>
<fault name="Exception">
<soap:fault name="Exception" use="literal"></soap:fault>
</fault>
</operation>
<operation name="checkPatientExistsByUniqueNo">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
</operation>
<operation name="checkPatientExistsByPatientDetails">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
<fault name="InfrastructureException">
<soap:fault name="InfrastructureException" use="literal"></soap:fault>
</fault>
</operation>
</binding>
<service name="PatientServiceImplService">
<port name="PatientServiceImplPort" binding="tns:PatientServiceImplPortBinding">
<soap:address location="http://localhost:8080/integration/patients"></soap:address>
</port>
</service>
</definitions>


HERE IS THE FAULT HANDLER:

                        <faultHandlers>
                            <catch faultVariable="SoapException" faultMessageType="ns2:ImpactMessengerException"
faultName="ns2:ImpactMessengerException">
                                <assign name="Assign1">
                                    <copy>
                                        <from>$SoapException.fault/errors</from>
                                        <to>$G_Error.fault/errors</to>
                                    </copy>
                                    <copy>
                                        <from>$SoapException.fault/message</from>
                                        <to>$G_Error.fault/message</to>
                                    </copy>
                                </assign>
                            </catch>
                            <catchAll>
                                <sequence name="Sequence1">
                                    <reply name="Reply1" partnerLink="IntegrationService"
operation="getPatientsOperation" portType="ns13:IntegrationPortType" faultName="ns13:SoapException"
variable="outputResponse"/>
                                    <exit name="Exit1"/>
                                </sequence>
                            </catchAll>
                        </faultHandlers>

Kam
Comment 29 kiran_bhumana 2008-01-25 23:30:06 UTC
Kam,
 I don't see a user error. And from the files, I feel that you have carefully done it, so I don't suspect the user error
here. Again this is no longer a NB bug, you should file a bug at
https://open-jbi-components.dev.java.net/servlets/ProjectIssues. I think the issue here is the incoming Fault message
didn't conform well to what it should have been or httpBC has a bug. I think it could be like the external service
didn't provide the fault name or something like that. 

Kiril,
 Now that you understood the issue correctly, do you think the project you put together can be used to replicate that?
Which of the three test cases should I be running?

If Kiril's project can't reproduce it, Kam, please provide a project with simpler BPEL. That way your bug will get fixed
quicker. (For example imagine if the versions of the tools we use are not compatible with all the artifacts you use, it
will only waste more time).

thanks,
Kiran.
Comment 30 kfarmah 2008-01-28 11:08:37 UTC
Hi,  
I will raise the issue as you suggest and reference this issue.
I think I am going to struggle to get a simpler project together as I don't know how else to model the problem, and I am
not as familiar with BPEL as you guys are.

The service that generates the fault uses the Metro web services stack if that helps.

Kam
Comment 31 kfarmah 2008-01-28 11:25:42 UTC
Issue raised as:
https://open-jbi-components.dev.java.net/issues/show_bug.cgi?id=359
Comment 32 Kirill Sorokin 2008-01-30 17:51:50 UTC
Created attachment 55777 [details]
Corrected isolated test-case
Comment 33 Kirill Sorokin 2008-01-30 17:54:08 UTC
Kiran, yes, I believe the test case I attached can be used to reproduce the error. I have removed the unnecessary data
from the project and reattached it. Please use the "Wed Jan 30 17:51:00 +0000 2008: IZ123890_Sample2.zip" file. The
compl application contains only one test-case -- Test_BPEL.

Meanwhile, since it has been identified that the issue belongs more to the runtime (and it has been filed there), I'm
resolving this one as INVALID.