Missing import value in SOAP message
Hi guys,
I have developed a function module that calls a .NET web service. I am having an issue that values for import parameter sent to .NET web service are missing. Before calling .NET web service, CODE parameter has a value but when it reach to .NET side there is no value.
CREATE OBJECT osoap. " Create object
TRY.
CALL METHOD osoap->set_method
EXPORTING
nsprefix = ' '
nsvalue = 'http://califoniasteel.com/'
name = 'VerifyPDFDelivery'.
Transfer Customer Code to in-parameter
GET REFERENCE OF p_ccode INTO dref.
GET REFERENCE OF code INTO dref.
CALL METHOD osoap->add_parameter
EXPORTING
direction = csoapconstants=>ic_param_inout
name = 'CODE'
value = dref.
GET REFERENCE OF p_file_found INTO dref.
CALL METHOD osoap->add_parameter
EXPORTING
direction = csoapconstants=>ic_param_out
name = 'VerifyPDFDeliveryResult'
value = dref.
Use friendly names
CALL METHOD osoap->set_tag_name_format
EXPORTING
format = csoapconstants=>ic_tagfmt_mixcase.
Serialize SOAP Document and transport message
isoap = osoap.
2 Create SOAP transport object and set payload
CALL METHOD csoaptransport=>new_http_transport
IMPORTING
transport = otransp.
CONCATENATE 'http://' l_soap_server ':' l_soap_port '/' l_soap_service INTO soapurl.
CALL METHOD otransp->set_destination_by_url
EXPORTING
url = soapurl.
CALL METHOD otransp->set_soapaction
EXPORTING
soapaction = l_soap_method.
CALL METHOD otransp->set_payload
EXPORTING
payload = isoap.
CALL METHOD otransp->request_response.
There is no error or system run time error during the call. I found a SAP Note 588924 but our Basis guy says it doesn't apply to our envi: SAP R/3 Enterprise, SAP_BASIS 620 SAPKB62063.
Let me know if anyone experiences the same issue and found any workaround for it.
Thanks.
Below is the log of the incoming message just prior to the failing SAML Verify step:
<?xml version="1.0" encoding="UTF-8" ?>
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://exception.common.periop.gehc.com" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns2="http://www.patient.patientmanager.periop.gehc.com/service/" xmlns:ns3="http://entity.common.periop.gehc.com" xmlns:ns4="http://entity.patient.patientmanager.periop.gehc.com" xmlns:ns5="http://entity.allergy.patientmanager.periop.gehc.com" xmlns:ns6="http://pdo.domain.customizer.periop.gehc.com" xmlns:ns7="http://entity.cases.scheduler.periop.gehc.com" xmlns:ns8="http://entity.insurance.patientmanager.periop.gehc.com">
- <env:Header>
- <ns1:Security>
- <saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="158RBY2QvCFPiTqdXYWh9A22" IssueInstant="2008-09-17T19:58:43Z" Issuer="GE" xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<saml:Conditions NotBefore="2008-09-17T19:58:13Z" NotOnOrAfter="2008-09-17T19:59:43Z" />
- <saml:AuthenticationStatement AuthenticationInstant="2008-09-17T19:58:43Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password">
- <saml:Subject>
<saml:NameIdentifier NameQualifier="www.ge.com" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">gowri</saml:NameIdentifier>
- <saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
</saml:Subject>
</saml:AuthenticationStatement>
</saml:Assertion>
</ns1:Security>
</env:Header>
- <env:Body>
- <ns2:getPatient>
<ns2:patientId>137115</ns2:patientId>
</ns2:getPatient>
</env:Body>
</env:Envelope>
Similar Messages
-
OWSM SAML Verify step problem: Missing Security Header in SOAP message
I'm having a problem with SAML steps. From gateway log:
2008-09-17 13:21:32,987 INFO [HTTPThreadGroup-58] saml.InsertSAMLSVStep - User attributes map set to generate the attribute assertions: null
2008-09-17 13:21:33,034 INFO [HTTPThreadGroup-60] saml.SAMLProcessor - Assertion Major Version :1 , Minor Version :1
2008-09-17 13:21:33,034 WARNING [HTTPThreadGroup-60] saml.SAMLProcessor - SAML Assertion verification error: An invalid token was provided
2008-09-17 13:21:33,034 WARNING [HTTPThreadGroup-60] saml.VerifySAMLStep - SAML Token verification failed:
2008-09-17 13:21:33,096 SEVERE [HTTPThreadGroup-58] wssecurity.OSDTWSSecurity - Missing Security Header in SOAP message
2008-09-17 13:21:33,096 WARNING [HTTPThreadGroup-58] wssecurity.SecurityBaseStep - Failure while applying XML Security
FAULT CODE: InvalidSecurity FAULT MESSAGE: Missing WS Security header in the SOAP message
at com.cfluent.policysteps.security.wssecurity.OSDTWSSecurity.decryptVerify(OSDTWSSecurity.java:369)
at com.cfluent.policysteps.security.wssecurity.DecryptStep.performXmlSecurity(DecryptStep.java:131)
at com.cfluent.policysteps.security.wssecurity.SecurityBaseStep.execute(SecurityBaseStep.java:238)
at com.cfluent.pipelineengine.container.DefaultPipeline.executeStep(DefaultPipeline.java:124)
but the wsse:Security header with SAML assertion IS confirmed in the incoming message log. Anybody seen this issue?Below is the log of the incoming message just prior to the failing SAML Verify step:
<?xml version="1.0" encoding="UTF-8" ?>
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://exception.common.periop.gehc.com" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns2="http://www.patient.patientmanager.periop.gehc.com/service/" xmlns:ns3="http://entity.common.periop.gehc.com" xmlns:ns4="http://entity.patient.patientmanager.periop.gehc.com" xmlns:ns5="http://entity.allergy.patientmanager.periop.gehc.com" xmlns:ns6="http://pdo.domain.customizer.periop.gehc.com" xmlns:ns7="http://entity.cases.scheduler.periop.gehc.com" xmlns:ns8="http://entity.insurance.patientmanager.periop.gehc.com">
- <env:Header>
- <ns1:Security>
- <saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="158RBY2QvCFPiTqdXYWh9A22" IssueInstant="2008-09-17T19:58:43Z" Issuer="GE" xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<saml:Conditions NotBefore="2008-09-17T19:58:13Z" NotOnOrAfter="2008-09-17T19:59:43Z" />
- <saml:AuthenticationStatement AuthenticationInstant="2008-09-17T19:58:43Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password">
- <saml:Subject>
<saml:NameIdentifier NameQualifier="www.ge.com" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">gowri</saml:NameIdentifier>
- <saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
</saml:Subject>
</saml:AuthenticationStatement>
</saml:Assertion>
</ns1:Security>
</env:Header>
- <env:Body>
- <ns2:getPatient>
<ns2:patientId>137115</ns2:patientId>
</ns2:getPatient>
</env:Body>
</env:Envelope> -
Sender RFC Adapter, missing import structure in inbound messages
Hi, I have a simple scenario RFC- RFC-Adapter - XI - SOAPAdapter - Webservice.
RFC has import parameter eblen type ekko-ebeln, and s_ekko type ekko.
Tables, it_ekpo, it_eket etc.
If i execute my interface, the tables and import parameter eblen is showed in Messages but not s_ekko. Import parameter is not empty. Th empty tables are showed to with tag </it_eket> but not s_ekko, if it doesnt exist.
I reimport rfc and maked complete cashe refresh but it doesnt help.
Have any an idee.
Thanks and regards
HüsniyeHave you done a CPA Cache refresh? Do this by opening URL http://server:port/CPACache/refresh?mode=full on your XI server.
The adapter engine caches metadata and sometimes this can get a bit out of sync. Try refreshing the CPA Cache or disabling and then re-enabling your RFC Adapter.
MJ -
Header missing in SOAP message header (SAP XI Extension)
Hi Experts,
We are implementing interface MasterDataUpdateConfirmation_Out between 2 SAP ERP systems. The middleware is SAP PI.
SAP PI team requested a change in this interface Stack - Replace Stack ABAP by Stack Java. The changes were made.
However, now we get an error in the interface in the SAP ERP sender system, but the message arrives to SAP PI where is processed without errors and also arrives to SAP ERP receive system and the message is also processes without errors.
The error we have in XML message in SAP ERP sender system is:
XML element {http://schemas.xmlsoap.org/soap/envelope/}Header missing in
SOAP message header (SAP XI Extension)
Exception of class CX_XMS_SYSERR_PARSER
Can anyone please help us? We have no ideia what to do.
Thanks in advance,
RSHi again,
I don't know if it is important, but the communication is asynchronous and the sender system is SAP ECC 6.0.
Thanks! -
Posting XML via HTTP post returns "Envelope missing in SOAP message header"
Hi,
I am trying to post a simple XML message directly to the integration server using an html document, where the form that contains the XML message is a simple
<b><FORM action="http://servername:8000/sap/xi/engine?type=entry" method="post"></b>
So, I add my xml message like this:
<?xml version="1.0" encoding="UTF-8">
<ns:PlantMaintenanceMessageType xmlns:ns="http://sap.com/demo/plantmaintenance">
<EquipmentID>SLIEQUIP5</EquipmentID>
<FunctionalLocation>KB</FunctionalLocation>
<Date/>
<Time/>
</ns:PlantMaintenanceMessageType>
but I get a message back from the Integration Server as:
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIProtocol</SAP:Category>
<SAP:Code area="PARSER">ITEM_MISSING</SAP:Code>
<SAP:P1>Envelope</SAP:P1>
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<b><SAP:Stack>XML tag Envelope missing in SOAP message header (SAP XI Extension)</SAP:Stack></b>
</SAP:Error>
Seems like I am missing the Envelope so my Integration Server can understand my post. What does the Envelope look like or should conatain so that the Integration Server accepts my XML file ?
Thanks !This is the trace
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Call Adapter
-->
- <SAP:Trace xmlns:SAP="http://sap.com/xi/XI/Message/30">
<Trace level="1" type="T">Party normalization: sender</Trace>
<Trace level="1" type="T">Sender scheme external =</Trace>
<Trace level="1" type="T">Sender agency external =</Trace>
<Trace level="1" type="T">Sender party external =</Trace>
<Trace level="1" type="T">Sender party normalized =</Trace>
<Trace level="1" type="B" name="CL_XMS_HTTP_HANDLER-HANDLE_REQUEST" />
- <!-- ************************************
-->
<Trace level="1" type="T">XMB was called with URL /sap/xi/engine?type=entry</Trace>
<Trace level="2" type="T">Request Line = POST /sap/xi/engine?type=entry HTTP/1.1</Trace>
<Trace level="2" type="T">Host = sapqxh:8020</Trace>
<Trace level="2" type="T">Server protocol = HTTP/1.1</Trace>
<Trace level="2" type="T">Remote address = 10.228.137.106</Trace>
<Trace level="1" type="T">COMMIT is done by XMB !</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-ENTER_XMS" />
- <!-- ************************************
-->
<Trace level="1" type="B" name="CL_XMS_MAIN-SET_START_PIPELINE" />
- <!-- ************************************
-->
<Trace level="3" type="T">XMB was called with external pipeline PID = ENTRY</Trace>
<Trace level="3" type="T">Getting type of XMB...</Trace>
<Trace level="1" type="B" name="SXMBCONF-SXMB_GET_XMB_USE" />
<Trace level="2" type="T">XMB kind = CENTRAL</Trace>
<Trace level="3" type="T">Start pipeline found</Trace>
<Trace level="2" type="T">Switch to external start pipeline PID = CENTRAL</Trace>
- <Trace level="1" type="B" name="CL_XMS_TROUBLESHOOT-ENTER_PLSRV">
<Trace level="3" type="T">No triggers found. OK.</Trace>
</Trace>
<Trace level="1" type="T">****************************************************</Trace>
<Trace level="1" type="T">* *</Trace>
<Trace level="1" type="T">* *</Trace>
<Trace level="1" type="T">XMB entry processing</Trace>
<Trace level="3" type="T">system-ID = QXH</Trace>
<Trace level="3" type="T">client = 220</Trace>
<Trace level="3" type="T">language = E</Trace>
<Trace level="3" type="T">user = PISUPER</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:19:04Z CET</Trace>
<Trace level="1" type="T">* *</Trace>
<Trace level="1" type="T">* *</Trace>
<Trace level="1" type="T">****************************************************</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_UC_EXECUTE" />
- <!-- ************************************
-->
<Trace level="1" type="T">Message-GUID = 4880474945AE67E2E10000000AE4896A</Trace>
<Trace level="1" type="T">PLNAME = CENTRAL</Trace>
<Trace level="1" type="T">QOS = EO</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_ASYNC" />
- <!-- ************************************
-->
<Trace level="3" type="T">QOS = EO</Trace>
<Trace level="3" type="T">Message-GUID = 4880474945AE67E2E10000000AE4896A</Trace>
<Trace level="1" type="T">Get definition of external pipeline = CENTRAL</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-LOOKUP_INTERNAL_PL_ID">
<Trace level="3" type="T">External PLID = CENTRAL</Trace>
<Trace level="3" type="T">Internal PLID = SAP_CENTRAL</Trace>
</Trace>
<Trace level="1" type="T">Get definition of internal pipeline = SAP_CENTRAL</Trace>
<Trace level="3" type="T">Generate prefixed queue name</Trace>
<Trace level="1" type="T">Queue name : XBTL0000</Trace>
<Trace level="1" type="T">Generated prefixed queue name = XBTL0000</Trace>
<Trace level="1" type="T">Schedule message in qRFC environment</Trace>
<Trace level="3" type="T">Setup qRFC Scheduler</Trace>
<Trace level="1" type="T">Setup qRFC Scheduler OK!</Trace>
<Trace level="3" type="T">Call qRFC .... MsgGuid = 4880474945AE67E2E10000000AE4896A</Trace>
<Trace level="3" type="T">Call qRFC .... Version = 000</Trace>
<Trace level="3" type="T">Call qRFC .... Pipeline = CENTRAL</Trace>
<Trace level="3" type="T">OK.</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="T">Going to persist message</Trace>
<Trace level="1" type="T">NOTE: The following trace entries are always lacking</Trace>
<Trace level="1" type="T">- Exit WRITE_MESSAGE_TO_PERSIST</Trace>
<Trace level="1" type="T">- Exit CALL_PIPELINE_ASYNC</Trace>
<Trace level="1" type="T">Async barrier reached. Bye-bye !</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="3" type="T">Version number = 000</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
- <!-- ************************************
-->
<Trace level="3" type="T">Persisting message Status = 001</Trace>
<Trace level="3" type="T">Message version 000</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
<Trace level="1" type="T">--start sender interface action determination</Trace>
<Trace level="1" type="T">select interface MIOA_US139_EmployeeData*</Trace>
<Trace level="1" type="T">select interface namespace urn:abbott-com:US139</Trace>
<Trace level="1" type="T">found interface MIOA_US139_EmployeeData</Trace>
<Trace level="1" type="T">found action ARCH</Trace>
<Trace level="1" type="T">set interface action to ARCH</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE">
<Trace level="3" type="T">Trace object available again now. OK.</Trace>
<Trace level="3" type="T">Message was read from persist layer. OK.</Trace>
<Trace level="3" type="T">Message properties in XMB object were setup. OK.</Trace>
<Trace level="3" type="ToDo">Make sure we catch exceptions in persist read</Trace>
<Trace level="3" type="ToDo">Tracing obj. not avail. before return of CL_XMS_MAIN-PERSIST_READ_MESSAGE</Trace>
</Trace>
<Trace level="1" type="T">Note: the following trace entry is written delayed (after read from persist)</Trace>
<Trace level="1" type="B" name="SXMS_ASYNC_EXEC" />
- <!-- ************************************
-->
<Trace level="3" type="T">message version successfully read from persist version= 000</Trace>
<Trace level="2" type="T">Increment log sequence to 001</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="T">Starting async processing with pipeline CENTRAL</Trace>
<Trace level="3" type="T">system-ID = QXH</Trace>
<Trace level="3" type="T">client = 220</Trace>
<Trace level="3" type="T">language = E</Trace>
<Trace level="3" type="T">user = PISUPER</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:19:08Z CET</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_SYNC" />
- <!-- ************************************
-->
<Trace level="1" type="T">Get definition of external pipeline CENTRAL</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-LOOKUP_INTERNAL_PL_ID">
<Trace level="3" type="T">External PLID = CENTRAL</Trace>
<Trace level="3" type="T">Internal PLID = SAP_CENTRAL</Trace>
</Trace>
<Trace level="1" type="T">Corresponding internal pipeline SAP_CENTRAL</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline attributes</Trace>
<Trace level="3" type="T">PID = SAP_CENTRAL</Trace>
<Trace level="3" type="T">ENABLE = 1</Trace>
<Trace level="3" type="T">TRACELEVEL = 0</Trace>
<Trace level="3" type="T">EXEMODE = A</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline elements</Trace>
<Trace level="3" type="T">ELEMPOS = 0001</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_RECEIVER_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0002</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_INTERFACE_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0003</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_RECEIVER_MESSAGE_SPLIT</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0004</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_MAPPING_REQUEST</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0007</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_OUTBOUND_BINDING</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0008</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_CALL_ADAPTER</Trace>
<Trace level="3" type="T">PLSRVTYPE = =SWITCH=</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0009</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_MAPPING_RESPONSE</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T" />
<Trace level="1" type="Timestamp">2008-07-18T14:19:08Z CET Begin of pipeline processing PLSRVID = CENTRAL</Trace>
- <Trace level="1" type="B" name="PLSRV_RECEIVER_DETERMINATION">
<Trace level="1" type="Timestamp">2008-07-18T14:19:08Z CET Start of pipeline service processing PLSRVID= PLSRV_RECEIVER_DETERMINATION</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_RECEIVER_DETERMINATION</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_RECEIVER_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_RD_PLSRV</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
- <Trace level="1" type="B" name="CL_RD_PLSRV-ENTER_PLSRV">
<Trace level="1" type="T">R E C E I V E R - D E T E R M I N A T I O N</Trace>
<Trace level="1" type="T">Cache Content is up to date</Trace>
<Trace level="2" type="T">Start without given receiver</Trace>
<Trace level="2" type="T">Classic Receiver Determination via Rules.</Trace>
<Trace level="2" type="T">Check conditions for rule line no. 1</Trace>
<Trace level="2" type="T">...valid Receiver w/o Condition: - BS_AIMS</Trace>
<Trace level="2" type="T">No Receiver found behaviour: 0</Trace>
<Trace level="2" type="T">Number of Receivers:1</Trace>
</Trace>
</Trace>
</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:19:08Z CET End of pipeline service processing PLSRVID= PLSRV_RECEIVER_DETERMINATION</Trace>
</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST">
<Trace level="3" type="T">Persisting message after plsrv call</Trace>
<Trace level="3" type="T">Message-Version = 001</Trace>
<Trace level="3" type="T">Message version 001</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</Trace>
- <Trace level="1" type="B" name="PLSRV_INTERFACE_DETERMINATION">
<Trace level="1" type="Timestamp">2008-07-18T14:19:11Z CET Start of pipeline service processing PLSRVID= PLSRV_INTERFACE_DETERMINATION</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_INTERFACE_DETERMINATION</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_INTERFACE_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_ID_PLSRV</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
- <Trace level="1" type="B" name="CL_ID_PLSRV-ENTER_PLSRV">
<Trace level="1" type="T">I N T E R F A C E - D E T E R M I N A T I O N</Trace>
<Trace level="1" type="T">Cache Content is up to date</Trace>
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) BS_AIMS MIIA_US139_EmployeeData</Trace>
<Trace level="2" type="T">...valid InbIf without Condition: MIIA_US139_EmployeeData</Trace>
<Trace level="2" type="T">Number of receiving Interfaces:1</Trace>
</Trace>
</Trace>
</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:19:11Z CET End of pipeline service processing PLSRVID= PLSRV_INTERFACE_DETERMINATION</Trace>
</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST">
<Trace level="3" type="T">Persisting message after plsrv call</Trace>
<Trace level="3" type="T">Message-Version = 002</Trace>
<Trace level="3" type="T">Message version 002</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</Trace>
<Trace level="1" type="B" name="PLSRV_RECEIVER_MESSAGE_SPLIT" />
- <!-- ************************************
-->
<Trace level="1" type="Timestamp">2008-07-18T14:19:14Z CET Start of pipeline service processing PLSRVID= PLSRV_RECEIVER_MESSAGE_SPLIT</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_RECEIVER_MESSAGE_SPLIT</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_RECEIVER_MESSAGE_SPLIT</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_XMS_PLSRV_RECEIVER_SPLIT</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
<Trace level="1" type="B" name="CL_XMS_PLSRV_RECEIVER_SPLIT-ENTER_PLSRV" />
- <!-- ************************************
-->
<Trace level="3" type="T">Case handling for different plsrv_ids PLSRV_RECEIVER_MESSAGE_SPLIT</Trace>
<Trace level="2" type="T">got property produced by receiver determination</Trace>
<Trace level="1" type="T">number of receivers: 1</Trace>
<Trace level="1" type="T">Single-receiver split case</Trace>
<Trace level="1" type="T">Post-split internal queue name = XBTM0000</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="T">Persisting single message for post-split handling</Trace>
<Trace level="1" type="T" />
<Trace level="1" type="T">Going to persist message + call qRFC now...</Trace>
<Trace level="1" type="T">NOTE: The following trace entries are always lacking</Trace>
<Trace level="1" type="T">- Exit WRITE_MESSAGE_TO_PERSIST</Trace>
<Trace level="1" type="T">Async barrier reached. Bye-bye !</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
- <!-- ************************************
-->
<Trace level="3" type="T">Persisting message Status = 012</Trace>
<Trace level="3" type="T">Message version 003</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE">
<Trace level="3" type="T">Trace object available again now. OK.</Trace>
<Trace level="3" type="T">Message was read from persist layer. OK.</Trace>
<Trace level="3" type="T">Message properties in XMB object were setup. OK.</Trace>
<Trace level="3" type="ToDo">Make sure we catch exceptions in persist read</Trace>
<Trace level="3" type="ToDo">Tracing obj. not avail. before return of CL_XMS_MAIN-PERSIST_READ_MESSAGE</Trace>
</Trace>
<Trace level="1" type="T">Note: the following trace entry is written delayed (after read from persist)</Trace>
<Trace level="1" type="B" name="SXMS_ASYNC_EXEC" />
- <!-- ************************************
-->
<Trace level="3" type="T">message version successfully read from persist version= 004</Trace>
<Trace level="2" type="T">Increment log sequence to 005</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="T">Starting async processing with pipeline CENTRAL</Trace>
<Trace level="3" type="T">system-ID = QXH</Trace>
<Trace level="3" type="T">client = 220</Trace>
<Trace level="3" type="T">language = E</Trace>
<Trace level="3" type="T">user = PISUPER</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:19:20Z CET</Trace>
<Trace level="1" type="T">----
</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_SYNC" />
- <!-- ************************************
-->
<Trace level="1" type="T">Get definition of external pipeline CENTRAL</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-LOOKUP_INTERNAL_PL_ID">
<Trace level="3" type="T">External PLID = CENTRAL</Trace>
<Trace level="3" type="T">Internal PLID = SAP_CENTRAL</Trace>
</Trace>
<Trace level="1" type="T">Corresponding internal pipeline SAP_CENTRAL</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline attributes</Trace>
<Trace level="3" type="T">PID = SAP_CENTRAL</Trace>
<Trace level="3" type="T">ENABLE = 1</Trace>
<Trace level="3" type="T">TRACELEVEL = 0</Trace>
<Trace level="3" type="T">EXEMODE = A</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline elements</Trace>
<Trace level="3" type="T">ELEMPOS = 0001</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_RECEIVER_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0002</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_INTERFACE_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0003</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_RECEIVER_MESSAGE_SPLIT</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0004</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_MAPPING_REQUEST</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0007</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_OUTBOUND_BINDING</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0008</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_CALL_ADAPTER</Trace>
<Trace level="3" type="T">PLSRVTYPE = =SWITCH=</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">ELEMPOS = 0009</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_MAPPING_RESPONSE</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">FL_DUMMY =</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T" />
<Trace level="1" type="Timestamp">2008-07-18T14:19:20Z CET Begin of pipeline processing PLSRVID = CENTRAL</Trace>
<Trace level="1" type="T">Start with pipeline element PLEL= 5EC3C53B4BB7B62DE10000000A1148F5</Trace>
- <Trace level="1" type="B" name="PLSRV_MAPPING_REQUEST">
<Trace level="1" type="Timestamp">2008-07-18T14:19:20Z CET Start of pipeline service processing PLSRVID= PLSRV_MAPPING_REQUEST</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_MAPPING_REQUEST</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_MAPPING_REQUEST</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_MAPPING_XMS_PLSRV3</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
- <Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV">
<Trace level="2" type="T">......attachment XI_Context not found</Trace>
<Trace level="3" type="T">Mapping already defined in interface determination</Trace>
<Trace level="3" type="T">Object ID of Interface Mapping 3CCA7AE76D3F33F19F8D7A8DAD494E65</Trace>
<Trace level="3" type="T">Version ID of Interface Mapping C387A5F00F8B11DCAB84C751AAE12E82</Trace>
<Trace level="1" type="T">Interface Mapping urn:abbott-com:US139 IM_US139_EmployeeData</Trace>
<Trace level="3" type="T">Mapping Steps 1 JAVA com/sap/xi/tf/_MM_US139_EmployeeData_</Trace>
<Trace level="3" type="T">Dynamic Configuration Is Empty</Trace>
<Trace level="2" type="T">Mode 0</Trace>
<Trace level="3" type="T">Creating Java mapping com/sap/xi/tf/_MM_US139_EmployeeData_.</Trace>
<Trace level="3" type="T">Load c387a5f0-0f8b-11dc-ab84-c751aae12e82, urn:abbott-com:US139, -1, com/sap/xi/tf/_MM_US139_EmployeeData_.class.</Trace>
<Trace level="3" type="T">Search com/sap/xi/tf/_MM_US139_EmployeeData_.class (urn:abbott-com:US139, -1) in swcv c387a5f0-0f8b-11dc-ab84-c751aae12e82.</Trace>
<Trace level="3" type="T">Loaded class com.sap.xi.tf._MM_US139_EmployeeData_</Trace>
<Trace level="2" type="T">Call method execute of the application Java mapping com.sap.xi.tf._MM_US139_EmployeeData_</Trace>
<Trace level="2" type="T">Java mapping com/sap/xi/tf/_MM_US139_EmployeeData_ completed. (executeStep() of com.sap.xi.tf._MM_US139_EmployeeData_</Trace>
<Trace level="3" type="T">Dynamic Configuration Is Empty</Trace>
</Trace>
</Trace>
</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:22:07Z CET End of pipeline service processing PLSRVID= PLSRV_MAPPING_REQUEST</Trace>
</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST">
<Trace level="3" type="T">Persisting message after plsrv call</Trace>
<Trace level="3" type="T">Message-Version = 005</Trace>
<Trace level="3" type="T">Message version 005</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</Trace>
- <Trace level="1" type="B" name="PLSRV_OUTBOUND_BINDING">
<Trace level="1" type="Timestamp">2008-07-18T14:22:12Z CET Start of pipeline service processing PLSRVID= PLSRV_OUTBOUND_BINDING</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_OUTBOUND_BINDING</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_OUTBOUND_BINDING</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_XMS_PLSRV_OUTBINDING</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
- <!-- ************************************
-->
- <Trace level="1" type="B" name="CL_XMS_PLSRV_OUTBINDING-ENTER_PLSRV">
<Trace level="2" type="T">O U T B O U N D - B I N D I N G</Trace>
<Trace level="2" type="T">Cache Content is up to date</Trace>
<Trace level="2" type="T">determine OUTBOUND BINDING for:</Trace>
<Trace level="2" type="T">-QEHCLNT230</Trace>
<Trace level="2" type="T">-BS_AIMS</Trace>
<Trace level="2" type="T">urn:abbott-com:US139.MIIA_US139_EmployeeData</Trace>
<Trace level="2" type="T">Channel found: - BS_AIMS - CC_BS_AIMS_File_Out_09</Trace>
<Trace level="2" type="T">no header mapping defined</Trace>
</Trace>
</Trace>
</Trace>
<Trace level="1" type="Timestamp">2008-07-18T14:22:12Z CET End of pipeline service processing PLSRVID= PLSRV_OUTBOUND_BINDING</Trace>
</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST">
<Trace level="3" type="T">Persisting message after plsrv call</Trace>
<Trace level="3" type="T">Message-Version = 006</Trace>
<Trace level="3" type="T">Message version 006</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</Trace>
<Trace level="1" type="B" name="PLSRV_CALL_ADAPTER" />
- <!-- ************************************
-->
<Trace level="1" type="Timestamp">2008-07-18T14:22:18Z CET Start of pipeline service processing PLSRVID= PLSRV_CALL_ADAPTER</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV" />
- <!-- ************************************
-->
<Trace level="3" type="T">Calling pipeline service: PLSRV_CALL_ADAPTER</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_CALL_ADAPTER</Trace>
<Trace level="3" type="T">PLSRVTYPE = =SWITCH=</Trace>
<Trace level="3" type="T">ADRESSMOD = SD</Trace>
<Trace level="3" type="T">P_CLASS =</Trace>
<Trace level="3" type="T">P_IFNAME =</Trace>
<Trace level="3" type="T">P_METHOD =</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Unknown channel type: File</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_CALL_ADAPTER</Trace>
<Trace level="3" type="T">PLSRVTYPE = AENGINE</Trace>
<Trace level="3" type="T">ADRESSMOD = SD</Trace>
<Trace level="3" type="T">P_CLASS = CL_XMS_PLSRV_IE_ADAPTER</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
- <!-- ************************************
-->
- <Trace level="1" type="B" name="CL_XMS_PLSRV_IE_ADAPTER-ENTER_PLSRV">
<Trace level="3" type="T">Channel for adapter engine: File</Trace>
- <Trace level="1" type="B" name="CL_XMS_PLSRV_CALL_XMB-CALL_XMS_HTTP">
<Trace level="2" type="T">old values in cache (no lock found) - start reading from SLD</Trace>
<Trace level="1" type="T">error reading SAP_XIAdapterFramework from SLD</Trace>
<Trace level="2" type="T">Adapter Framework(s) found</Trace>
<Trace level="2" type="T">Service Port(s) found - take first one</Trace>
<Trace level="2" type="T">URL found</Trace>
<Trace level="2" type="T">Get logon data for adapter engine (SAI_AE_DETAILS_GET):</Trace>
<Trace level="3" type="T">URL = http://sapqxh:52000/MessagingSystem/receive/AFW/XI</Trace>
<Trace level="3" type="T">User = PIISUSER</Trace>
<Trace level="3" type="T">Cached =</Trace>
<Trace level="3" type="T">Creating HTTP-client</Trace>
<Trace level="3" type="T">HTTP-client: creation finished</Trace>
<Trace level="3" type="T">Security: Basic authentication</Trace>
<Trace level="3" type="T">Serializing message object...</Trace>
<Trace level="3" type="T">HTTP-client: sending http-request...</Trace>
<Trace level="3" type="T">HTTP-client: request sent</Trace>
<Trace level="3" type="T">HTTP-client: Receiving http-response...</Trace>
<Trace level="3" type="T">HTTP-client: response received</Trace>
<Trace level="3" type="T">HTTP-client: checking status code...</Trace>
<Trace level="3" type="T">HTTP-client: status code = 200</Trace>
<Trace level="3" type="T">Deserializing message object...</Trace>
<Trace level="1" type="T">Empty response received!</Trace>
<Trace level="3" type="System_Error">HTTP-client: error response=</Trace>
<Trace level="3" type="T">HTTP-client: closing...</Trace>
</Trace>
</Trace>
</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST">
<Trace level="3" type="T">Persisting message after plsrv call</Trace>
<Trace level="3" type="T">Message-Version = 007</Trace>
<Trace level="3" type="T">Message version 007</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</Trace>
<Trace level="3" type="System_Error">Error exception return from pipeline processing!</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
- <!-- ************************************
-->
<Trace level="3" type="T">Persisting message Status = 014</Trace>
<Trace level="3" type="T">Message version 008</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</SAP:Trace> -
Missing parameter values message when exporting report
Post Author: Gr_Pr
CA Forum: .NET
Using .NET 2005, CR XI R2, and the Crystal SDK for .NET 2005 to generate reports. Basically CR is my application's reporting tool. So, we create a report in CR XI R2, then distribute that report to our users loading it into the .NET application using the Report Document class.
We have a small problem.
Our user's have the ability to use pre-defined 'prompts' that will pass parameters to the reports. Let's say that the prompt will pass in (5) pre-defined parameter values, but the customer wants to run their own 'custom' report using our prompt, but their 'custom' report contains (6) parameters.
If I let the Report Viewer load the report, the user will be prompted for the missing parameter value that was not supplied by the 'prompt'.
If I run the report without loading it into the Viewer and try to export the report directly to PDF I receive an error message from CR stating I have 'Missing Parameter Values' then the report errors out.
Has anyone come across this? Is there something I missed?
I am not real sure as to why you would be prompted by the Viewer and not by the Export Class. This worked fine when using the RDC component, I was prompted for the missing parameter value by both options.
Any help would be greatly appreciated.Hi,
The report has it's own ADO Datasource set in crystal reports, so I just pass the log on information to the report object before doing anything else.
this.DataSourceConnections[0].SetConnection("ServerName", "Database", "sa", "Password");
I then do a refresh before applying the parameter values (I do this because the user can preview the report more than one time by using a preview button on the parameter form without re-loading the report object)
this.Refresh();
Then I set all parameter values followed by setting the recordselection formula. -
MessageId missing in SOAP message header
I am trying to execute a SAP (IDoc) -> XI -> SAP (ABAP Proxy). The SAP machines are 6.2, the XI machine is 6.4. I have generated and tested the ABAP proxy, works without issue. Per previous threads I also tested the message mapping in the repository, also works successfully. When I review the SXI_Monitor in XI, the message is received successfully, mapped successfully, but errors in the Adater Call step. There is no message listed as received in the sxi_monitor on the recevier SAP system. Error Message is as follows:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Call Adapter
-->
- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIProtocol</SAP:Category>
<SAP:Code area="PARSER">ITEM_MISSING</SAP:Code>
<SAP:P1>/MessageHeader/MessageId</SAP:P1>
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<SAP:Stack>XML tag /MessageHeader/MessageId missing in SOAP message header (SAP XI Extension)</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
Looking at the message in the monitor it does have a message id assigned. Only other interesting thing is in the trace section where it says :
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
<Trace level="1" type="System_Error">Error exception return from pipeline processing!</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
All other messages are successful in this persistence(send to file, Idoc, etc).
What is the issue?Hi Darin,
Check your receiver communication channel. Make sure that the protocol is set to XI 2.0 for 6.2.
Hope that helps.
Best Regards,
Doo -
Envelope missing in SOAP message header (SAP XI Extension)
I have scenario where in I am sending a file from XI to PCK. BUt i am getting a following error.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Call Adapter
-->
- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
<SAP:Category>XIProtocol</SAP:Category>
<SAP:Code area="PARSER">ITEM_MISSING</SAP:Code>
<SAP:P1>Envelope</SAP:P1>
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<SAP:Stack>XML tag Envelope missing in SOAP message header (SAP XI Extension)</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
I am enclosing the file i am trying to send.
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:CFP_SENDER_MT xmlns:ns0="HTTP://PCKXI.WORLDBANK.ORG">
- <SEND>
<TF_Number>12</TF_Number>
<TF_Desc>1212</TF_Desc>
</SEND>
</ns0:CFP_SENDER_MT>
Can somebody please enlighten me about this error? Points would be rewarded immediately
Regards,
ManishDear Manish,
quite often the reason for this kind of error
is the fact that the receiver of the XI message is
returning a http response to the Integration Server.
As of XI3.0 SP21 / PI7.0 SP13 this response
is also properly parsed and visible in the error
header of the XI message.
For almost all prior support package levels an
advanced correction is available as per OSS note:
1064346 Improved error output for connection problems
Please check whether this applies to your system.
If so, you will see detailed information on the error
in the error header object of the XI message as soon
as this issue re-occurs.
Best Regards,
Harald Keimer
XI Development Support
SAP AG, Walldorf -
Translated wire message missing some values
Hi,
I am enqueuing an EDIFACT xml to B2B out queue (IP_OUT_QUEUE) which is getting converted to wire message and delivered correctly. But the translated wire message is missing some values:
UNH segment of EDIFACT xml:
<Segment-UNH>
<Element-0062>1</Element-0062>
<Composite-S009>
<Element-0065>ORDERS</Element-0065>
<Element-0052>D</Element-0052>
<Element-0054>07B</Element-0054>
<Element-0051>UN</Element-0051>
</Composite-S009>
</Segment-UNH>
Starting part of wire message:
UNA:+.? 'UNB+UNOB:1+ + +100407:2354+1003'UNG+ORDERS+ + +100407:2354+1003+UN+D:07B'UNH+1+ORDERS'BGM+105:::?' ?'+GSIAP.WORLD?:oracle.apps.po.event.xm::?'
In wire message, 'UNH+1+ORDERS' - this portion is not having values of Element-0052, Element-0054 and Element-0051. Why are this values ('D','07B','UN') missing in the translated wire message?
How can I make them appear in wire message?
Appreciate your help.
Thanks in Advance,
SiddheshHi Siddhesh,
Check your ecs file. Possibly you have not defined these params in ecs file.
Enable the validation then you will come to know exact issue.
Rgds,
Nitesh Jain -
Changing the value of the SOAPElement in the SOAP message
Now another problem I encountered was of overwriting a value in the SOAP message by my value. SOAPElement interface which extends Node interface provides me the method getValue() to get the value of the node but doesnt give me any method to set any other value instead of this.
<token xsi:type="xsd:string">token123</token>
I want to replace the value "token123" with my value.
Is there no provision for altering a value in the SOAP message? Is this due to security contraints?
If yes then can we detach the same node and add a similar node with the new value. I wanted to try the same using addChildElements() method but then the problem here is how do I create a new SOAPElement in the handler as its an interface and not a class. Why I want to add a similar node is because I am having the definition of this object in the WSDL file, so if I attach the node corresponding to the parameter of the object then I would get the object populated with this value at J2EE or .net layer.
Also I thought of adding an attribute to the same node but then since this attribute will not be defined in the WSDL, the value of this attribute will not populate the java object at the J2EE layer. Hence attribute introduction also didnt help.
This is the userData object in the soap body:
</q1:FetchDetailsInput><q2:UserData xmlns:q2="java:com.anthem.enb.common.data" xsi:type="q2:UserData" id="id2">
<password xsi:type="xsd:string">12345</password>
<token xsi:type="xsd:string">token123</token>
<userID xsi:type="xsd:string">vikas123</userID>
</q2:UserData>
This is my code to extract the values from the above message:
Iterator i = ctx.getMessage().getSOAPPart().getEnvelope().getBody().getChildElements();
System.out.println(" i.hasNext() =" + i.hasNext());
while (i.hasNext())
Object obj = i.next();
System.out.println(" obj :" + obj.getClass());
if (obj instanceof SOAPElement)
SOAPElement e = (SOAPElement) obj;
System.out.println("e :" + e);
String operationName = e.getElementName().getLocalName();
LOG.info(CLASS_NAME + "operationName :" + operationName);
if (operationName.equals("UserData"))
Iterator j = e.getChildElements();
LOG.info(CLASS_NAME + " j.hasNext() : " + j.hasNext());
while (j.hasNext())
Object obj2 = j.next();
LOG.info(CLASS_NAME + " obj2 :" + obj2);
LOG.info(CLASS_NAME + " obj2 :" + obj2.getClass());
if (obj2 instanceof SOAPElement)
SOAPElement eGrandChild = (SOAPElement) obj2;
String operationName2 =
eGrandChild.getElementName().getLocalName();
if (operationName2.equals("userID"))
String strPass = eGrandChild.getValue();
LOG.info(CLASS_NAME + " strPass:" + strPass);
else if (operationName2.equals("password"))
String strUserID = eGrandChild.getValue();
LOG.info(CLASS_NAME + " strUserID:" + strUserID);
else if (operationName2.equals("token"))
String strToken = eGrandChild.getValue();
Please help.how do I create a new SOAPElement in the handler as its an interface and not a class?Here is an example:
<example>
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage m = messageFactory.createMessage();
SOAPEnvelope env = m.getSOAPPart().getEnvelope();
SOAPBody body = env.getBody();
SOAPElement fResponse =
body.addBodyElement(env.createName("fResponse"));
fResponse.addAttribute(env.createName("encodingStyle"),
"http://schemas.xmlsoap.org/soap/encoding/");
SOAPElement result =
fResponse.addChildElement(env.createName("result"));
result.addTextNode("test");
ctx.setMessage(m);
</example>
Jong -
Missing some value of Message Notification from WorkCenter
Hi Expert,
I have scenario when user create message notification from workcenter, it will be send mail automatically to the user (mail account) in status new and I have successfully create it.
And the issue is =
When i preview the message from the transaction (from menu action), it will display the whole message.
But when user received the message via mail account, some value from the message is miss (not whole message will be appear)
Could anyone help me how to solve this issue?
Regards,
Rhesa SyahrialI just used to have stalonetray running at the bottom of my screen. I made its height small enough to fit along with my conky 16px I think it was. Doesn't take up too much space.
Since I switched to i3, I find its better to just not use trays as I can simply assign a whole workspace for skype and so I don't need any tray. -
Hi buddies,
Have you ever been suffering from missing messages of SOAP sender adapter?
The java sender program shows that the messaging has been delivered to XI SOAP adapter successfully, but I cannot find it in neither adapter engine, nor integration engine.
BTW, our clients use the XFire technology to generate the soap message and send it without any exception to be throw out.
Any suggestions?
YiNingif I want to use SOAP sender adapter in asynchronous senario, is there any method that can be used to avoid this issue?
I've been suffering this from gSOAP which using C++, XFire which using Java in different projects.
I found these tools determines whether the receiver system have accepted the soap message by getting the http code 200.
Edited by: YiNing Mao on Jan 29, 2008 5:33 PM -
WLS 7.0 sp2 - Servlet Problems with SOAP messages
I'm using Weblogic 7.0 SP2 and trying to create a Servlet to receive SOAP wrapped
XML messages. I'm getting the following error. Is this a problem with WLS7.0sp2's
support of JAXM? The System.out.println's indicate I have successfully received
the incoming SOAP request and then successfully formatted the SOAP response, but
upon returning saving the response it appears to blow up. Does anyone have any
suggestions?
I need to do the following in a servlet:
- receive an incoming SOAP request with an embedded XML message
- perform some processing
- return a SOAP response with an embedded XML message
Should I be using JAXM? Or can I do this same task easily with JAX-RPC?
<Feb 24, 2004 4:10:42 PM AST> <Error> <HTTP> <101017> <[ServletContext(id=260434
7,name=isd.war,context-path=)] Root cause of ServletException
java.lang.Error: NYI
at weblogic.webservice.core.soap.SOAPMessageImpl.saveRequired(SOAPMessag
eImpl.java:360)
at javax.xml.messaging.JAXMServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1058)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:401)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:306)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:5445)
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
eManager.java:780)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3105)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2588)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
>
I've stripped the code down so that all it does is verifies the incoming SOAP/XML
request and creates a hard-coded response... be gentle... I'm a novice at this
import javax.xml.soap.*;
import javax.servlet.*;
import javax.servlet.http.*;
// import javax.xml.transform.*;
import java.util.*;
import java.io.*;
public class RegisterServlet extends HttpServlet
static MessageFactory fac = null;
static
try
fac = MessageFactory.newInstance();
catch (Exception ex)
ex.printStackTrace();
public void init(ServletConfig servletConfig) throws ServletException
super.init(servletConfig);
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException
try
System.out.println("** Note: doPost() Entering req = " + req);
// Get all the headers from the HTTP request
MimeHeaders headers = getHeaders(req);
// Get the body of the HTTP request
InputStream is = req.getInputStream();
// Now internalize the contents of a HTTP request
// and create a SOAPMessage
SOAPMessage msg = fac.createMessage(headers, is);
System.out.println("** Note: doPost() Step A");
SOAPMessage reply = null;
reply = onMessage(msg);
System.out.println("** Note: doPost() Step B reply = " + reply);
if (reply != null)
* Need to call saveChanges because we're
* going to use the MimeHeaders to set HTTP
* response information. These MimeHeaders
* are generated as part of the save.
if (reply.saveRequired())
System.out.println("** Note: doPost() Step C reply.saveRequired()");
reply.saveChanges();
resp.setStatus(HttpServletResponse.SC_OK);
putHeaders(reply.getMimeHeaders(), resp);
// Write out the message on the response stream
OutputStream os = resp.getOutputStream();
System.out.println("** Note: doPost() Step D os = " + os);
reply.writeTo(os);
os.flush();
else
resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
catch (Exception ex)
throw new ServletException("** Error: SAAJ POST failed: " + ex.getMessage());
static MimeHeaders getHeaders(HttpServletRequest req)
Enumeration enum = req.getHeaderNames();
MimeHeaders headers = new MimeHeaders();
while (enum.hasMoreElements())
String headerName = (String)enum.nextElement();
String headerValue = req.getHeader(headerName);
StringTokenizer values =
new StringTokenizer(headerValue, ",");
while (values.hasMoreTokens())
headers.addHeader(headerName,
values.nextToken().trim());
return headers;
static void putHeaders(MimeHeaders headers, HttpServletResponse res)
Iterator it = headers.getAllHeaders();
while (it.hasNext())
MimeHeader header = (MimeHeader)it.next();
String[] values = headers.getHeader(header.getName());
if (values.length == 1)
res.setHeader(header.getName(),
header.getValue());
else
StringBuffer concat = new StringBuffer();
int i = 0;
while (i < values.length)
if (i != 0)
concat.append(',');
concat.append(values[i++]);
res.setHeader(header.getName(), concat.toString());
// This is the application code for handling the message.
public SOAPMessage onMessage(SOAPMessage message)
SOAPMessage replymsg = null;
try
System.out.println("** Note: OnMessage() Entering msg = " + message);
//Extract the ComputerPart element from request message and add to reply SOAP
message.
SOAPEnvelope reqse = message.getSOAPPart().getEnvelope();
SOAPBody reqsb = reqse.getBody();
//System.out.println("** Note: OnMessage() Step B");
System.out.println("** Note: OnMessage () Step A Soap Request Message Body = "
+ reqsb);
//Create a reply mesage from the msgFactory of JAXMServlet
System.out.println("** Note: OnMessage () Step B");
replymsg = fac.createMessage();
SOAPPart sp = replymsg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPBody sb = se.getBody();
System.out.println("** Note: OnMessage () Step C Soap Reply Before Message Body
= " + sb);
se.getBody().addBodyElement(se.createName("RegisterResponse")).addChildElement(se.createName("ErrorCode")).addTextNode("000");
System.out.println("** Note: OnMessage () Step D Soap Reply After Message Body
= " + sb);
replymsg.saveChanges();
System.out.println("** Note: OnMessage() Exiting replymsg = " + (replymsg));
catch (Exception ex)
ex.printStackTrace();
return replymsg;
Michael,
I got the same error on WLS8.1/Win2K professional and apache FOP (old version).
After digging into the WLS code and FOP(old version). i found the conflict happens
on
the "org.xml.sax.parser" system property. In WLS code, they hard coded like the
following when startup weblogic server:
System.setProperty("org.xml.sax.parser", "weblogic.xml.jaxp.RegistryParser");
But the FOP code try to use the "org.xml.sax.parser" system property to find the
sax parser then conlict happens.
Here is the response from BEA support :
"I consulted with our developers regarding the question of whether we can change
the hard-coded value for the java system property: org.xml.sax.parser by using
a configuration parameter and I found that unfortunately there is no specific
setting to change the value. As you had mentioned in your note the org.xml.sax.parser
system property can be changed programmatically in your application code."
I solve my problem by using newer apache FOP (it never use the system property:org.xml.sax.parser
any more) and XML Registy for WLS8.1.
Good luck.
David Liu
Point2 Technologies Inc.
"p_michael" <[email protected]> wrote:
>
Help.
When we migrated from WLS 6.1 to WLS 7.0 SP2 when encountered a problem
with XML
parsing that did not previously exist.
We get the error "weblogic.xml.jaxp.RegistryParser is not a SAX driver".
What does this mean? And, what should we do about it.
p_michael -
PayPal integration using SOAP messages
Hello,
for a integration scenario we want to call a PayPal SOAP API as described in https://www.x.com/docs/DOC-1244.
The PayPal safety requirements are fullfilled by giving a Username, Password and Signature in the SOAP Header:
<SOAP-ENV:Header>
<RequesterCredentials xmlns=u201Durn:ebay:api:PayPalAPIu201D xsi:type=u201Debl:CustomSecurityHeaderTypeu201D>
<Credentials xmlns=u201Durn:ebay:apis:eBLBaseComponentsu201D xsi:type=u201Debl:UserIdPasswordTypeu201D>
<Username>api_username</Username>
<Password>api_password</Password>
<Signature>api_signature</Signature>
<Subject>authorizing_account_emailaddress</Subject>
</Credentials>
</RequesterCredentials>
</SOAP-ENV:Header>
I have given the three values as Adapter-Specific Message Attributes filled by UDF in Message Mapping.
The filled values are also visible in monitoring in section DynamicConfiguration.
SOAP Adapter: http://s3.directupload.net/file/d/2127/r8y4aywt_jpg.htm
Monitoring: http://s5.directupload.net/file/d/2127/cqvfds35_jpg.htm
But PayPal responded:
Authentication/Authorization Failed
You do not have permissions to make this API call
My credentials are ok. I have tested it within the PayPal NVP API Tester: http://www.shopsandbox.de/PayPal/Refund/ .
How do I have to manipulate the SOAP header for a successful SOAP API call?
Is it necessary also to insert the nodes ?
If yes, how?
Thanks in advance,
AndréHi,
I´ve created the whole SOAP message in Message Mapping and changed the SOAP receiver adapter sending the message without envelope. But the response is:
ADAPTER.HTTP_EXCEPTION
HTTP 500 Internal Server Error
<?xml version="1.0" encoding="UTF-8"?>
<Envelope>
<Header>
<RequesterCredentials>
<Credentials>
<Username>xxxxx</Username>
<Password>xxxx</Password>
<Signature>xxxxxx</Signature>
</Credentials>
</RequesterCredentials>
</Header>
<Body>
<RefundTransactionReq>
<RefundTransactionRequest>
<Version>54.0</Version>
<TransactionID>xxxxxxxxx</TransactionID>
<InvoiceID>222222</InvoiceID>
<RefundType>Partial</RefundType>
<Amount>1</Amount>
<Memo>memotext</Memo>
</RefundTransactionRequest>
</RefundTransactionReq>
</Body>
</Envelope>
Have I missed sth?
Thanks,
André -
Signing a soap message seems to not work in jwsdp14
I'm trying to sign a soap message according to the latest oasis specifications (http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf) using the libraries provided with jwsdp14 (mainly xmlsec.jar).
As far as I know, there is not yet documention/example about this specific issue.
The following is the code I have to sign a soap message: it seems to work fine because the signed soap message respects the above specifications... but what I notice is that the digest and the signature values it contains are always the same, I mean: if i change the source soap message, the signed soap message in output is always the same!
Any clue??
import com.sun.org.apache.xml.security.Init;
import com.sun.org.apache.xml.security.signature.XMLSignature;
import com.sun.org.apache.xml.security.transforms.Transforms;
import com.sun.org.apache.xml.security.utils.Constants;
import com.sun.xml.wss.*;
import com.sun.xml.wss.reference.DirectReference;
import org.w3c.dom.Document;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPBody;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
public class Main {
public static void main(String[] args) {
// The file from which we will load the sample SOAP message
String fileName = "F:\\SampleSoapMessage.xml";
// Store the WSSE signed message here
String signatureFileName = "F:\\SignedSampleSoapMessage.xml";
try {
// Initialize the apache libraries
Init.init();
// Obtain security elements from the keystore
PrivateKey privateKey = MySecurityUtils.getPrivateKey();
X509Certificate cert = MySecurityUtils.getCertificate();
// Obtain a sample SOAPMessage from a file
FileInputStream fis = new FileInputStream(new File(fileName));
Document doc = XMLUtil.toDOMDocument(fis);
SOAPMessage message = MyFileUtils.getMessageFromFile(doc);
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
// Set the wsu:Id attribute to the Body
XMLUtil.setWsuIdAttr(body, "MyId");
// Create a WSSE context for the SOAP message
SecurableSoapMessage sssm = new SecurableSoapMessage(message);
// Create a security header for the message (<wsse:Security>)
SecurityHeader sh = sssm.findOrCreateSecurityHeader();
// Insert the certificate (<wsse:BinarySecurityToken>)
X509SecurityToken stoken = new X509SecurityToken(header.getOwnerDocument(), cert, "X509TokenRef");
sh.insertHeaderBlock(stoken);
// Insert the keyinfo referring to the certificate (<ds:KeyInfo>)
KeyInfoHeaderBlock kihb = new KeyInfoHeaderBlock(header.getOwnerDocument());
SecurityTokenReference secTR = new SecurityTokenReference(header.getOwnerDocument());
DirectReference dirRef = new DirectReference();
dirRef.setURI("#X509TokenRef");
secTR.setReference(dirRef);
kihb.addSecurityTokenReference(secTR);
//sh.insertHeaderBlock(kihb);
// Insert the Signature block (<ds:Signature>)
SignatureHeaderBlock shb = new SignatureHeaderBlock(header.getOwnerDocument(), XMLSignature.ALGO_ID_SIGNATURE_RSA);
Transforms transforms = new Transforms(header.getOwnerDocument());
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
shb.addSignedInfoReference("#MyId", transforms, Constants.ALGO_ID_DIGEST_SHA1);
shb.addChildElement(kihb.getAsSoapElement());
sh.insertHeaderBlock(shb);
// Digest all References (#MyId) in the SignedInfo, calculate the signature value
// and set it in the SignatureValue Element
shb.sign(privateKey);
// Add the signature data to the header element
header.addChildElement(sh.getAsSoapElement());
// Save the signed SOAP message
FileOutputStream fos = new FileOutputStream(new File(signatureFileName));
message.writeTo(fos);
message.writeTo(System.out);
} catch (Exception exc) {
exc.printStackTrace();
System.out.println("An error has occurred : " + exc.toString());
PS: Classes MySecurityUtils and MyFileUtils are not included since they have nothing interesting.
The sample input sopa message is:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<Intestazione>
</Intestazione>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
and the output signed sample message is:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#MyId">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
YdKNSPWnx630AYeZ6AXVco1b0RMo8C3WWbziq7C009gg4nhknEZmH0ds78y328SgAlAAVR6Swwok
HE3OWgL8TZ1Ks0IimmmDd8/XIb2KlfiqnUNtTjGjUn9FLQEv/CMbmrCr7EO9rf/N+0cyAyGzrKo5
ieEQhtZy9uZAKh2mrmM=
</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#X509TokenRef"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo></ds:Signature><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="X509TokenRef">MIIDITCCAsugAwIBAgIQIdu5EMFuQntM5IBOMeFcETANBgkqhkiG9w0BAQUFADCBqTEWMBQGA1UE
ChMNVmVyaVNpZ24sIEluYzFHMEUGA1UECxM+d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1Rl
c3RDUFMgSW5jb3JwLiBCeSBSZWYuIExpYWIuIExURC4xRjBEBgNVBAsTPUZvciBWZXJpU2lnbiBh
dXRob3JpemVkIHRlc3Rpbmcgb25seS4gTm8gYXNzdXJhbmNlcyAoQylWUzE5OTcwHhcNMDQwODA1
MDAwMDAwWhcNMDQwODE5MjM1OTU5WjBhMQswCQYDVQQGEwJJVDENMAsGA1UECBMEUk9NQTENMAsG
A1UEBxQEcm9tYTEOMAwGA1UEChQFaXNzcGExDjAMBgNVBAsUBWNoaWVmMRQwEgYDVQQDFAt3d3cu
dGVzdC5pdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtIsomDk9VthgMorPmG0dAwqLtTBi
U69liwopwrnAbtzIiO56R9yh4tXvG9+QWtEFRcDHVwWi9YdaHQFCvjymnNYDUHkpJsWp11nIAfOA
k+d9v1YDje4S6oba7tsIJSEkUu7LQ888Q3cGt/KUaEu6b0lZJ5zY9slK0onUPeTB3e8CAwEAAaOB
0TCBzjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3Js
LnZlcmlzaWduLmNvbS9TZWN1cmVTZXJ2ZXJUZXN0aW5nQ0EuY3JsMFEGA1UdIARKMEgwRgYKYIZI
AYb4RQEHFTA4MDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5
L1Rlc3RDUFMwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA0EA
Y66OqTOpHcpNUPlD4A38s8bPIIjrf+C+Wv08lUj+DGN5pm+gBWdbWEGaQmqU8fPPtGrQnHz2NAUr
ZmLaEw/qKw==</wsse:BinarySecurityToken></wsse:Security></SOAP-ENV:Header>
<SOAP-ENV:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="MyId">
<aTag>
<aChild>a value</aChild>
</aTag>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
NOTE: Check the value of <ds:SignatureValue> and <ds:DigestValue>: they never change even if I change the body of the source message.Quoting Farrukh's reply to this question on java.net -
I can share some examples of how I have used JWSDP 1.4 and XML DSIG API to sign and verify a "standalone" soap message with and without mime attachments.
Please see the following Utility class written for the freebXML Registry project [1] for an example of how to do what you seek:
http://cvs.sourceforge.net/viewcvs.py/ebxmlrr/omar/src/java/org/freebxml/omar/common/security/SecurityUtil.java?view=markup
See methods signSOAPMessage(...), signPayload(...), verifySOAPMessage(...) and verifyPayloadSignature(...)
What you are trying to do is definitely doable and has been done with JWSDP 1.4. In my experience XML DSIG API met my needs very well.
Best of luck.
[1] freebXML Registry Project:
http://ebxmlrr.sourceforge.net
---------------------------------------------------------------------------------
Maybe you are looking for
-
In ERPI 11.1.1.3 Admin guide its mentioned we need to update the below , do we need to do the same in 11.1.2.2 version also Updating the snpsagent.conf File ä To update the snpsagent.conf file: 1 Navigate to the folder where Oracle Data Integrator is
-
Apple TV no longer appears in devices list
Hey all: I'm having a very frustrating problem with ATV and iTunes. I can no longer see the Apple TV in the devices list. Now, I know that there are two Apple Support KB documents that cover this issue. I've already gone through everything in those.
-
Bootcamp -- Windows 7 64-bit 0x80070570 Error During Installation
Hello Apple community, I am trying to install Windows 7 Ultimate 64-bit on my Late 2011 early 2012 MacBook Pro 15 inch. I go through the Bootcamp process, insert the installation disc everything works fine up to the part when Windows is Expanding Fil
-
Installing snow leopard on new hard drive - disc not seen or found
I can't provide too many details right now as my hard drive is out, and I'm trying to reinstall an operating system. Problem: Installed a new hard drive purchased from reputable repair store. Last installation disc I have is OS X Snow Leopard. When
-
Links in Subscriptions emails do not take you to the new post when clicked. Having to scroll to the new post (when the blue indicators are on) is a pain.