PHP 5.2.4 Parsing Issue
I've installed MySQL successfully and have built a working database. However, the entropy 5.2.4 PHP build does not execute the PHP code. The only code it actually runs is <?php phpinfo(); ?>.
I have checked the actual pages on another server running osx 10.4.10 and Php 5.2.2 and they work fine.
I have deleted the php5 folder and reinstalled.
Anyone have an idea why PHP 5.2.4 won't run? I followed the install carefully, but clearly I missed something.
PG
PeeGee76 wrote:
I get a blank page without anything being executed (it appears). The "view source" is also blank. I've checked to see if the server is fine with basic HTML pages, and it is (they show just fine).
That indicates there is a problem with either the scripts or your PHP configuration. You are getting an error when executing those scripts. I think the problem may be with your scripts, even though they work elsewhere. If phpinfo works, that means that php is executing. It may be that you have some dependencies in your PHP script that are satisfied on the other platform, but not on MacOS X.
I don't really know my unix at all, so I'm not sure how to test the scripts from the command line. I'll try and find out how to do that.
The executable is just "php". You can create a text file that contains the data from an HTTP message and feed that in via the command line "cat test.http | php". There is probably more to it than that, but that is the general idea. I used to do this all the time back when I used Perl for CGI.
The most important thing to do is check the file /var/log/httpd/error_log. I think your problem will be clearly printed there.
Similar Messages
-
Parsing Issue in Filter For Date Format
Hi Folks,
I am having Parsing Issue on "Key Date" Object in Universe. See the Error and Code below for your review
Error: Parse Failed: Exception: DBD, The value entered is not valid. It must adhere to one of the following formats.
YYYYMMDD
DD.MM.YYYYState:N/A
Code:
<OPERATOR VALUE="AND"><OPTIONAL><FILTER KEY="0I_DAYIN"><CONDITION OPERATORCONDITION="Between"><CONSTANT TECH_NAME="@Prompt('Day Interval From','A','Calendar Day\LovDay IntervalBase',mono,primary_key)"/><CONSTANT TECH_NAME="@Prompt('Day Interval To','A','Calendar Day\LovDay IntervalBase',mono,primary_key)"/></CONDITION></FILTER></OPTIONAL><FILTER KEY="0P_KEYDA"><CONDITION OPERATORCONDITION="Equal"><CONSTANT TECH_NAME="@Prompt('Key Date','D',,mono,free)"/></CONDITION></FILTER></OPERATOR>
This universe is created by someone else and client need to modify it with a calendar but i did not modify it yet however its already giving me the hard time. Kindly advise, any kind of help will be appreciated
ThanksHi,
With the information provided I cannot for sure get to the error but here is what I would check.
Firstly, I was wondering if the 5th parameter in the @Prompt can be Primary_Key. I thought it would be either free or constrained.
Secondly, please the LOV values for the @ prompt are being populated from 'Calendar Day\LovDay IntervalBase'. So I would check the date format being used there.
Third, the To and From dates are alphaneumeric and not dates, so I am not sure how the comparision would happen.
Hope this helps.
Regards,
Madhur -
Bpel parsing issue with special characters...
Hi All,
We are integrating Oracle Sales Order information with OTM as Order Releases.
For this we are sending the Sales Order in the form of clob from the procedure to the Bpel process.
1. A PL/SQL procedure would send the Sales order XML as a CLOB.
2.In the BPEL process , we are performing ora:parseXML() function on the clob obtained.
3.A patch was installed on the BPEL SOA server:
10.1.3.3.1 MLR#8, Patch#6906880 which was supposed to handle all the parsing activities at run time.
4. But when ever any special character viz..; #,UNIT¿S etc the BPEL process is failing with a fault string due to Parsing error.
5. Could you please provide us a workaround for solving this issue ASAP with all the special characters.
I have provided a sample xml tag due to which the parsing is failing in the bpel process. here it is failing because it is not able to parse : UNIT¿S successfully...
<SHIPPING_INSTRUCTIONS>
**San Dieg UNIT¿S contact name is Jenny Haden 858-609-1170** 12/12/08
**Updated Contact is ASHTON REYES 72-696-1525, hours are 830-5 only, N/S. Millyz DELIVERY
CONTACT: ELLEN HILGER @ 248-932-9000: LINE 4.1 -TRIAL CONVERSION FROM ORDER # 25766204
</SHIPPING_INSTRUCTIONS>
is there some other bpel patch or some other workaround using which whatever input value comes in , the bpel is able
to successully parse that through..
we are stuck with this special character parsing issue as of now and go live is very near ...your help/inputs would be highly appreciated
thanksGuys,
I am new to OTM and SOA/BPEL architecture.
Could you please suggest me in detail as how to integrate OTM with outside world using BPEL.
Thanks,
Kamleshwar -
Sentinel 6.1 will not parse my feed from Ciscoworks. All network syslog
data is collected by ciscoworks and stored in a file syslog.log. This
file can be pulled by the collector manager as a file source or pushed
via Snare to the collector mgr.. the data cannot be parsed using either
method using standard Cisco Collector (Cisco IOS Router xx Cisco Switch
and Router 6.1r2).
Is there a working collector or do I have to build one?
eisensee
eisensee's Profile: http://forums.novell.com/member.php?userid=98444
View this thread: http://forums.novell.com/showthread.php?t=425629OK, hmm...
1) At issue is more likely the Collector version, not so much the
platform version. The old Collectors made an attempt at correcting some
weird syslog formats, but the feature ended up being too confusing and
error prone for us to support. The new Collectors only support proper
RFC-compliant syslog, for a number of reasons which we can get into if
you like.
2) I may be wrong, but I believe a customer told me that latter-day
versions of CiscoWorks introduced a syslog forwarding option. I poked
around on Cisco for a bit, but there are hundreds of specific products
with the 'CiscoWorks' label so I don't know what applies.
3) OK, so here's the deal. RFC-compliant syslog message are constructed
as:
MMM DD HH:MM:SS hostid message
The original message from your switch should look something like:
Nov 11 15:30:17 172.253.248.33
\/\/426174\/801DF193ED75\/CCAPI\/cc_api_call_connected:
It actually looks like (guessing a bit, here:
Nov 11 15:30:17 172.253.248.33 2182635: 418971: Nov 11 15:30:14.739:
\/\/426174\/801DF193ED75\/CCAPI\/cc_api_call_connected:
Which indicates that a couple numbers and another timestamp are being
injected into the "message" portion. May or may not be an issue, if the
Collector handles it that way - review the Collector doc for proper
configuration details.
But then your Epilog gets a hold of the message, and inserts *another*
header:
Nov 11 15:30:54 10.101.251.4 sm-ciscowks.smad2.savemart.com\t\t0\tNov
11 15:30:17 172.253.248.33 2182635: 418971: Nov 11 15:30:14.739:
\/\/426174\/801DF193ED75\/CCAPI\/cc_api_call_connected:
This violates RFC3164 in a number of ways, namely:
- it's not supposed to modify the original message IN ANY WAY if it's
already a proper syslog message (of course, Epilog may assume it's NOT a
syslog message, since it's in a file)
- It's using a fully-qualified hostname in its header, which is NOT
VALID
- There are tab characters after the header, which aren't proper syslog
characters
If I couldn't configure Epilog to not be stupid, what I would do is
create a little 'custom.js' script, and define my customerPreparse()
method to strip off the entire ugly Epilog header, something like:
Record.prototype.customPreparse = function() {
this.s_RXBufferString =
this.s_RXBufferString.substr(this.s_RXBufferString .lastIndexOf("\t"));
(You may need to do the same thing to rec.s_Body as well, and note that
I haven't tested this code at all!).
Then just follow the normal process to inject custom.js into your
Collectors, set the Execution Mode to 'custom', and you'll be up and
running.
NOTE: the major thing that Epilog is breaking here, however, is not the
Collector - the Syslog Connector also does some minimal parsing of the
input and will automatically create Event Source nodes based on the
syslog header. The syslog header is supposed to list the hostid of the
ORIGINAL event source as it's second element (after the timestamp), and
by injecting the ciscoworks device hostid, Epilog breaks that (in our
parlance, that's the Reporter, not the Observer).
If you look directly at the file on the CiscoWorks device, what does it
look like? Everything after the \t\t0\t in the sample you sent?
You might ditch Epilog entirely and use something like tail -F or
'netcat' instead, which won't add silly stuff to the messages.
DCorlette
DCorlette's Profile: http://forums.novell.com/member.php?userid=4437
View this thread: http://forums.novell.com/showthread.php?t=425629 -
all.
We have oracle 9i release 2 databse installed and acced by clients using Forms 6i.
Due to some reasons we are shifting to Oracle 10g rel 1 and PHP as front end.
The new server machine has windows 2000 professional with service pack 4.
i installed orcl 10g rel1 on it. I configured the PHP and place the application pages on the folder and it is workign fine.
Now the problem is that when i try to access the application from my computer it shows me the error as
"Database connection error." This error is hardcodded by me , if there is any issue in connectivity , i have hardcoded that my user will see this error.
a few of the clients when they type the machine name on thier browsers see this error
" PHP Warning: Unknown(): Unable to load dynamic library './extensions/php_oci8.dll' - Access is denied. in Unknown on line 0 PHP Warning: Unknown(): Unable to load dynamic library './extensions/php_oracle.dll' - Access is denied. in Unknown on line 0 "
My database clients werent also connecting but the following action has caused the fault to be corrected.
wat i did was that i replace the
host=(endsys.eapa.com)
to host= (ip address).
But still i am unable to connect to the application via my webbrowser.
I have installed PHP correctly, IIS correctly,
may b there is anything to do with the permissions.
Kindly suggest something so that i may able to bring up the application
RegardsHi: Im running IIS on a Windows Server 2000, PHP Version 4.4.2 and I have installed on the same server my Oracle 9 DB.
I have edited php.ini like:
extension_dir = "C:\PHP4\extensions"
extension=php_oci8.dll
I have run dependency walker in order to ensure all dependencys are ok.
I have granted full access to Everybody to the PHP directory
But im having the following error:
PHP Warning: Unknown(): Unable to load dynamic library 'C:\PHP4\extensions\php_oci8.dll' - Access is denied. in Unknown on line 0
Does anybody know where i should start troubleshooting this?
Thanks, Lautaro Dolberg -
PHP and Actionscript 3.0 issue
Hi,
I have a MySql database with some content that I want to
access from my Flash movie through a PHP script. I actually get
things to work (sort of) since I can pass content from the
database, through the PHP script into my Flash movie - but the
problem is the formatting of the content being sent to Flash. The
string that I want to send is written in PHP (UTF-8 encoded) as
follows:
---PHP---
$file_list = array();
array_push($file_list, "å");
array_push($file_list, "ä");
$temp= implode(",",$file_list);
print_r("arrayen=$temp");
What I do (in this simplyfied example) is to create an array
and populate it with the Swedish letters 'å' and 'ä'.
These are just placeholders of course and are in my actual code
retrieved from my database.
So, "arrayen=$temp" is sent to my Flashfile, where the code
looks as follows:
---Flash AS 3.0---
var variables:URLVariables = new URLVariables();
var vrequest:URLRequest = new URLRequest();
vrequest.url = "retrieveData.php";
vrequest.method = URLRequestMethod.POST;
vrequest.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, completeHandler);
try {
loader.load(vrequest);
} catch (error:Error) {
trace("Unable to load URL");
function completeHandler(event:Event):void {
var loader2:URLLoader = URLLoader(event.target);
var variables:URLVariables = new URLVariables(loader2.data);
trace(variables);
The outcome of the last 'trace' should be something like
"arrayen=å,ä"
but unfortunately it comes out as:
%0A%0A%0Aarrayen=%C3%A5%2C%C3%A4%2C%C3%A5%2C%C3%A4%2C%C3%A5%2C%C3%A4%2C%C3%A5%2C%C3%A4%20% 0A%0A%0A%0A
OK, I believe my problem is obvious - how on earth do I get
it right?
Thanks a milion in advance!
.cristianHi, and thanks for your reply.
Actually, I think I got it to work in a pretty strange way...
There was something dodgy happening in the PHP script,
something indicated by others in different forums (see some of the
comments further down on:
http://se.php.net/urlencode).
I read somewhere that PHP had an issue with urlencoding and one
solution was to urlencode twice. Having done that, things started
to happen on the Flash side, but there was still some strange
formatting going on. Eventually I solved it by changing my
flash_encode() to:
PHP Code:
// --------------------------------------------------- ENCODE
FOR FLASH
function flash_encode ($input) {
return rawurlencode(rawurlencode(($input)));
That is, using 'rawurlencode()' and no utf8_decode().
In my Flash file I then simply had to unescape twice:
AS Code:
function completeHandler(event:Event):void {
var loader2:URLLoader = URLLoader(event.target);
loader2.dataFormat = URLLoaderDataFormat.VARIABLES;
var variables2:URLVariables = new
URLVariables(loader2.data);
var temp:String = String(variables2);
trace(temp); // just to check the "raw" data
var temp2 = unescape(temp);
var temp3 = unescape(temp2);
trace(temp3);
The output is now as expected!
Please note that I am not very skilled in programming so if
anyone has a better solution please submit it. I'll use this for
now though
.c -
Hello I am doing some SOAP XML stuff and I am having an issue that hopefully I can get some help with.
Is XML like this valid to do in a SOAP message?
<prompt>1 &_lt_; 0? <prompt>It's suppose to represent "1 < 0?"
* the forum formatter seems to eat up my encoded text and transofrms it into acutal "<" so I am placing underscores "_" everywhere to keep the text. so above is actually without underscores
From what I've read I think it is. I have text like this transported as part of the overall SOAP message to my client from the server.
In my code I do:
// Create an instance of the DocumentBuilderFactory
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
// Get the DocumentBuilder from the factory
DocumentBuilder builder = documentFactory.newDocumentBuilder();
Document doc = builder.parse(inputStream);
...inputStream is an InputStream (specifically ByteArrayInputStream) containing the XML.
The issue I am having is that wherever I have an '&' (such as "&_lt_;" or "&_gt_;" or "&" etc...) the parsing seems to get cut off and the rest of the string doesn't seem to get parsed. So the above string "1 &_lt_; 0?" ends up being "1 ".
Also is there an easy way to get back or rebuild the XML into a string from a Document object? I would really like to do that right after I do the parse method and see if the XML data that the Document object has is the same as what's in the inputStream (which is "1 &_lt_; 0?").
Any input you can provide is much appreciated. Thanks,
LatemHello I am doing some SOAP XML stuff and I am having an issue that hopefully I can get some help with.
Is XML like this valid to do in a SOAP message?
<prompt>1 &_lt_; 0? <prompt>It's suppose to represent "1 < 0?"
* the forum formatter seems to eat up my encoded text and transofrms it into acutal "<" so I am placing underscores "_" everywhere to keep the text. so above is actually without underscores
From what I've read I think it is. I have text like this transported as part of the overall SOAP message to my client from the server.
In my code I do:
// Create an instance of the DocumentBuilderFactory
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
// Get the DocumentBuilder from the factory
DocumentBuilder builder = documentFactory.newDocumentBuilder();
Document doc = builder.parse(inputStream);
...inputStream is an InputStream (specifically ByteArrayInputStream) containing the XML.
The issue I am having is that wherever I have an '&' (such as "&_lt_;" or "&_gt_;" or "&" etc...) the parsing seems to get cut off and the rest of the string doesn't seem to get parsed. So the above string "1 &_lt_; 0?" ends up being "1 ".
Also is there an easy way to get back or rebuild the XML into a string from a Document object? I would really like to do that right after I do the parse method and see if the XML data that the Document object has is the same as what's in the inputStream (which is "1 &_lt_; 0?").
Any input you can provide is much appreciated. Thanks,
Latem -
RFC to XML-RFC Parsing issue in RFC Adapter as Sender
Hi all,
I tried to use RFC adapter as a sender. The scenario I am trying to achieve is R3 -> RFC Adapter Sender --> BPM --> RFC Adapter Receiver --> SAP Auto-ID system.
The reason to use two RFC adapter and BPM is to log the request message if the RFC call fails. Everything works as expected, except the RFC Adapter Sender.
The RFC I am calling has an input table. The input data I use works fine if I call it via SE37 or remotely from another SAP system. However, if I call it via RFC adapter, when XI parses the data into RFC-XML format, the input data is all messed up.
DATA: BEGIN OF ID_STR,
ID_VERSION(8) TYPE C,
ID(96) TYPE C,
ELEMENT_NAME(50) TYPE C,
ELEMENT_VALUE(128) TYPE C,
END OF ID_STR.
DATA: it_id LIKE TABLE OF ID_STR,
ls_id LIKE ID_STR.
ls_id-ID_VERSION = 'EPC_1.30'.
ls_id-ID = '30340242206DC3C00000000A'.
ls_id-element_name = 'BATCH_ID'.
ls_id-element_value = 'BATCH001'.
APPEND ls_id TO it_id.
CALL FUNCTION '/AIN/UI_MOBILE_MSG_SEND'
IN BACKGROUND TASK
DESTINATION 'RFC_UPDATEAII'
EXPORTING
IV_BUSINESS_PROCESS = '09'
IV_COMMAND = 'DO'
IV_ACTION_TYPE = 'APL2'
IV_PRT_ID = '31140242200000000F000000'
IV_DEVGRP_EXTID = 'MOBILE'
TABLES
IT_ID = it_id
commit work.
And the parsed RFC-XML message is:
<?xml version="1.0" encoding="UTF-8" ?>
<rfc:_-AIN_-UI_MOBILE_MSG_SEND
xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
<IV_ACTION_TYPE>APL2</IV_ACTION_TYPE>
<IV_BTD_EXTID />
<IV_BTD_TYPE />
<IV_BUSINESS_PROCESS>09</IV_BUSINESS_PROCESS>
<IV_COMMAND>DO</IV_COMMAND>
<IV_DEVGRP_EXTID>MOBILE</IV_DEVGRP_EXTID>
<IV_LOC_EXTID />
<IV_LOC_TYPE />
<IV_PRT_ID>31140242200000000F000000</IV_PRT_ID>
<IV_PRT_ID_VERSION />
<IV_REASON_CODE />
<IV_UNAME/>
<ET_RETURN />
<IT_ID>
<item>
<ID_VERSION>EPC_1.30</ID_VERSION>
<ID>206DC3C00000000A BATCH_ID</ID>
<ELEMENT_NAME />
<ELEMENT_VALUE />
</item>
</IT_ID>
</rfc:_-AIN_-UI_MOBILE_MSG_SEND>
You can see the data in the table is all wrong, it should be:
<IT_ID>
<item>
<ID_VERSION>EPC_1.30</ID_VERSION>
<ID>30340242206DC3C00000000A</ID>
<ELEMENT_NAME>BATCH_ID</ELEMENT_NAME>
<ELEMENT_VALUE>BATCH001</ELEMENT_VALUE>
</item>
</IT_ID>
The calling system is a 4.6C non-unicode system, and the destination system is a unicode system (this does not matter since the first part of the integration is between R3 and XI). There is no config found on R3 side to specify non-unicode because it is a rather old system. In XI RFC Adapter config, I checked non-unicode checkbox (I also tested it with this unchecked, but still the same issue).
Have any of you seen this problem and how you resolve it?
Thanks a lot for your help!
Regards,
HartHi Hart
long time no seen - hope you remember me
>The reason to use two RFC adapter and BPM is to log the request message if the RFC call fails
there is an easy way (guess max 3-4 hours) to solve all of your issues
and get rid of a BPM
use IDOC - XI - ABAP Proxy
then you will have IDOC and ABAP Proxy that always log the message on both ends (and you can restart ABAP proxies easily in AII - and every AII supports ABAP proxies) + you get rid of a BPM as it's not necessary as far as I understand (as it's asyn communication right?)
maybe you can go this way and IDOCs always work...
good luck,
Regards,
Michal Krawczyk
http://mypigenie.com XI/PI FAQ -
Xml parsing issue with the existsnode function
Hi Friends,
I have a question as like below
We have the contacts and alternate contacts request as like below.
<TXLife>
<UserAuthRequest>
<UserLoginName>hqtest24</UserLoginName>
<UserDate>2012-07-11</UserDate>
<UserTime>12:42:55</UserTime>
</UserAuthRequest>
<TXLifeRequest>
<TransRefGUID>0c95642d-663a-455f-bd92-aca678538986</TransRefGUID>
<TransType tc="1204">OLI_TRANS_TRNPARTY</TransType>
<TransExeDate>2012-07-11</TransExeDate>
<TransExeTime>12:42:55</TransExeTime>
<InquiryLevel tc="3">OLI_INQUIRY_OBJRELOBJ</InquiryLevel>
<InquiryView>
<InquiryViewCode>INTERMEDIARYUPDATE-CHBM-1204A</InquiryViewCode>
</InquiryView>
<OLifE>
<SourceInfo>
<SourceInfoName>CHBM Admin Tool</SourceInfoName>
</SourceInfo>
<Party id="Intermediary1">
<PartyTypeCode tc="2">OLI_PT_ORG</PartyTypeCode>
<PartySysKey SystemCode="CHBM">111259</PartySysKey>
<FullName>Example Law Firm test</FullName>
<Organization>
<DBA>Example Law Firm test</DBA>
</Organization>
<Address>
<AddressTypeCode tc="2">OLI_ADTYPE_BUS</AddressTypeCode>
<Line1>20 Yellow Brick Rd</Line1>
<Line2>Suite 23</Line2>
<Line3>line 3</Line3>
<City>wonderland34</City>
<AddressState>NY</AddressState>
<Zip>229292</Zip>
<AddressCountry>US</AddressCountry>
</Address>
<Phone>
<PhoneTypeCode tc="2">OLI_PHONETYPE_BUS</PhoneTypeCode>
<DialNumber></DialNumber>
</Phone>
<Phone>
<PhoneTypeCode tc="19">OLI_PHONETYPE_FAX</PhoneTypeCode>
<DialNumber></DialNumber>
</Phone>
<Attachment id="Attachment1">
<DateCreated>2012-07-11</DateCreated>
<UserCode>hqtest24</UserCode>
<AttachmentBasicType tc="1">Text</AttachmentBasicType>
<AttachmentSource>ATTORNEY</AttachmentSource>
<Description>INTERMEDIARY TYPE UPDATED</Description>
<AttachmentData>Attorney</AttachmentData>
<AttachmentType tc="1009800001">Transaction Log</AttachmentType>
<AttachmentLocation tc="1">Inline</AttachmentLocation>
<OLifEExtension VendorCode="0098" ExtensionCode="Attachment">
<AttachmentExtension>
<CreationTime>12:42:55</CreationTime>
<Sequence>1</Sequence>
</AttachmentExtension>
</OLifEExtension>
</Attachment>
<Attachment id="Attachment2">
<DateCreated>2012-07-11</DateCreated>
<UserCode>hqtest24</UserCode>
<AttachmentBasicType tc="1">Text</AttachmentBasicType>
<AttachmentSource>James</AttachmentSource>
<Description>ALTERNATE CONTACT FIRST NAME UPDATED</Description>
<AttachmentType tc="1009800001">Transaction Log</AttachmentType>
<AttachmentLocation tc="1">Inline</AttachmentLocation>
<OLifEExtension VendorCode="0098" ExtensionCode="Attachment">
<AttachmentExtension>
<CreationTime>12:42:55</CreationTime>
<Sequence>2</Sequence>
</AttachmentExtension>
</OLifEExtension>
</Attachment>
<Attachment id="Attachment3">
<DateCreated>2012-07-11</DateCreated>
<UserCode>hqtest24</UserCode>
<AttachmentBasicType tc="1">Text</AttachmentBasicType>
<AttachmentSource>Mathew</AttachmentSource>
<Description>ALTERNATE CONTACT LAST NAME UPDATED</Description>
<AttachmentType tc="1009800001">Transaction Log</AttachmentType>
<AttachmentLocation tc="1">Inline</AttachmentLocation>
<OLifEExtension VendorCode="0098" ExtensionCode="Attachment">
<AttachmentExtension>
<CreationTime>12:42:55</CreationTime>
<Sequence>3</Sequence>
</AttachmentExtension>
</OLifEExtension>
</Attachment>
<EMailAddress>
<EMailType tc="1">Business</EMailType>
<AddrLine></AddrLine>
</EMailAddress>
<URL>
<URLAddr>www.example.com</URLAddr>
<URLType tc="1">Home Page</URLType>
</URL>
</Party>
<Activity id="Activity1" HoldingID="Intermediary1">
<UserCode>hqtest24</UserCode>
<LastUpdate>2012-07-11</LastUpdate>
<ActivityCode>CHBM10004</ActivityCode>
<OLifEExtension VendorCode="0098" ExtensionCode="Activity">
<ActivityExtension>
<SubActivityCode>CHBM20002</SubActivityCode>
<LastUpdateTime>12:42:55</LastUpdateTime>
</ActivityExtension>
</OLifEExtension>
</Activity>
<Party id="Contact1">
<PartyTypeCode tc="1">OLI_PT_PERSON</PartyTypeCode>
<PartySysKey>555223</PartySysKey>
<Person>
<FirstName>Jack</FirstName>
<LastName>Scarecrow23</LastName>
</Person>
<Phone>
<PhoneTypeCode tc="2">OLI_PHONETYPE_BUS</PhoneTypeCode>
<DialNumber>2223993993</DialNumber>
</Phone>
<Phone>
<PhoneTypeCode tc="19">OLI_PHONETYPE_FAX</PhoneTypeCode>
<DialNumber>2223392020</DialNumber>
</Phone>
<EMailAddress>
<EMailType tc="1">Business</EMailType>
<AddrLine>[email protected]</AddrLine>
</EMailAddress>
</Party>
<Relation id="Relation1" OriginatingObjectID="Intermediary1" RelatedObjectID="Contact1">
<RelationRoleCode tc="150">Authorized Person</RelationRoleCode>
</Relation>
<Relation id="Relation1" OriginatingObjectID="Intermediary1">
<RelationRoleCode tc="104">Intermediary</RelationRoleCode>
<RelationDescription tc="42">Attorney</RelationDescription>
</Relation>
<Party id="Contact2">
<PartyTypeCode tc="1">OLI_PT_PERSON</PartyTypeCode>
<PartySysKey>556915</PartySysKey>
<Person>
<FirstName/>
<LastName/>
</Person>
<Phone>
<PhoneTypeCode tc="2">OLI_PHONETYPE_BUS</PhoneTypeCode>
<DialNumber>2343434</DialNumber>
</Phone>
<Phone>
<PhoneTypeCode tc="19">OLI_PHONETYPE_FAX</PhoneTypeCode>
<DialNumber>45345345</DialNumber>
</Phone>
<EMailAddress>
<EMailType tc="1">Business</EMailType>
<AddrLine>[email protected]</AddrLine>
</EMailAddress>
</Party>
<Relation id="Relation4" OriginatingObjectID="Intermediary1" RelatedObjectID="Contact2">
<OriginatingObjectType tc="6">Party</OriginatingObjectType>
<RelatedObjectType tc="6">Party</RelatedObjectType>
<RelationRoleCode tc="150">Authorized Person</RelationRoleCode>
<InterestPercent>-1.0</InterestPercent>
<Sequence>2</Sequence>
</Relation>
</OLifE>
</TXLifeRequest>
</TXLife>
From the above request we have to parse the alternate contact details.
In the procedure we are using as like below
FOR b IN (
SELECT t.vAltCntcity vAltCntcity,
t.Partysyskey Partysyskey,
t.vAltCntZip vAltCntZip,
t.vAltCntGovtID vAltCntGovtID,
t.vAltCntTelno vAltCntTelno,
t.vAltCntemailaddr vAltCntemailaddr,
t.vAltCntstats vAltCntstats,
t.vAltCntAdd1 vAltCntAdd1,
t.vAltCntAdd2 vAltCntAdd2,
t.vAltCntAdd3 vAltCntAdd3,
t.AltCntstate AltCntstate,
t.AltCntcntry AltCntcntry,
t.vAltCntBRTH_DT vAltCntBRTH_DT,
t.vAltCntGender vAltCntGender,
t.vAltCntFaxno vAltCntFaxno,
t.vAltCnturladdr vAltCnturladdr,
t.AltCntorgFST_NM AltCntorgFST_NM,
t.AltCntorgLST_NM AltCntorgLST_NM,
t.AltCntorgMID_NM AltCntorgMID_NM,
t.AltCntorgPFX_NM AltCntorgPFX_NM,
t.AltCntorgSUFX_NM AltCntorgSUFX_NM,
t.AltCntpartytypecode AltCntpartytypecode,
t.vAltCntdatarep vAltCntdatarep,
t1.vAltCntInterestPercent vAltCntInterestPercent,
t1.ROID ROID
FROM (
SELECT xData doc FROM dual ) temp_table,
XMLTable ( '/TXLife/TXLifeRequest/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]' passing doc
COLUMNS OOID varchar2(50) path '@OriginatingObjectID'
, ROID varchar2(50) path '@RelatedObjectID'
, vAltCntInterestpercent varchar2(100) path 'InterestPercent'
)t1,
XMLTable('/Party[@id=$roid]' passing vAltcnt, t1.roid as "roid"
COLUMNS
vAltCntcity VARCHAR2(20) path 'City',
Partysyskey VARCHAR2(100) path 'PartySysKey',
vAltCntZip VARCHAR2(20) path 'Address/Zip',
vAltCntGovtID VARCHAR2(20) path 'GovtID',
vAltCntTelno VARCHAR2(20) path 'Phone[PhoneTypeCode/@tc=2]/DialNumber',
vAltCntemailaddr VARCHAR2(200) path 'EMailAddress/AddrLine',
vAltCntstats varchar2(20) path 'Client/ClientStatus/@tc',
vAltCntAdd1 varchar2(1000) path 'Address/Line1',
vAltCntAdd2 varchar2(1000) path 'Address/Line2',
vAltCntAdd3 varchar2(1000) path 'Address/Line3',
AltCntstate varchar2(100) path 'Address/AddressState',
AltCntcntry varchar2(100) path 'Address/AddressCountry',
vAltCntBRTH_DT date path 'Person/BirthDate',
vAltCntGender char(1) path 'Person/Gender/@tc',
vAltCntFaxno varchar2(100) path 'Phone[PhoneTypeCode/@tc=19]/DialNumber',
vAltCnturladdr varchar2(100) path 'URL/URLAddr',
AltCntorgFST_NM varchar2(100) path 'Person/FirstName',
AltCntorgLST_NM varchar2(100) path 'Person/LastName',
AltCntorgMID_NM varchar2(100) path 'Person/MiddleName',
AltCntorgPFX_NM varchar2(100) path 'Person/Prefix',
AltCntorgSUFX_NM varchar2(100) path 'Person/Suffix',
AltCntpartytypecode varchar2(10) path 'PartyTypeCode/@tc',
vAltCntdatarep varchar2(100) path '@DataRep'
) t
LOOP
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/FirstName')
INTO vAltCntFirstnamechk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/FirstName') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntFirstnamechkflag:='Y';
END;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/LastName')
INTO vAltCntLastNamechk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/LastName') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntLastNamechkflag:='Y';
END;
END LOOP;
Here while parsing the data for contact2(with the request provided) by using the above procedure its going to exception.
If the value is not there between the firstname then it should not go to the exception.
If the firstname tag is not there it should go to the exception.
But in the above procedure for the altcntfirstname and altcntlastname selectstatements its going to the exception part when there is no value for firstname(<FirstName></FirstName>).
Is there any way to resolve this issue?
Regards,
JyothirmaiHi Odie,
In the request more than one alternate contact used to come(that means contact1 is primary contact,contact2 is alternate contact1,contact3 is alternate contact2 etc).
We are retrieving the RelatedObjectID and named as ROID in the for loop.
That means in the for loop we are getting the RelatedObjectID,if that RelatedObjectID is equal to party id then that firstname we are checking by using the below select statement.
suppose when we used as like below in the loop the same RelatedObjectID(contact2) is repeating every time.
FOR b IN (
SELECT t.vAltCntcity vAltCntcity,
t.Partysyskey Partysyskey,
t.vAltCntZip vAltCntZip,
t.vAltCntGovtID vAltCntGovtID,
t.vAltCntTelno vAltCntTelno,
t.vAltCntemailaddr vAltCntemailaddr,
t.vAltCntstats vAltCntstats,
t.vAltCntAdd1 vAltCntAdd1,
t.vAltCntAdd2 vAltCntAdd2,
t.vAltCntAdd3 vAltCntAdd3,
t.AltCntstate AltCntstate,
t.AltCntcntry AltCntcntry,
t.vAltCntBRTH_DT vAltCntBRTH_DT,
t.vAltCntGender vAltCntGender,
t.vAltCntFaxno vAltCntFaxno,
t.vAltCnturladdr vAltCnturladdr,
t.AltCntorgFST_NM AltCntorgFST_NM,
t.AltCntorgLST_NM AltCntorgLST_NM,
t.AltCntorgMID_NM AltCntorgMID_NM,
t.AltCntorgPFX_NM AltCntorgPFX_NM,
t.AltCntorgSUFX_NM AltCntorgSUFX_NM,
t.AltCntpartytypecode AltCntpartytypecode,
t.vAltCntdatarep vAltCntdatarep,
t1.vAltCntInterestPercent vAltCntInterestPercent,
t1.ROID ROID
FROM (
SELECT xData doc FROM dual ) temp_table,
XMLTable ( '/TXLife/TXLifeRequest/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]' passing doc
COLUMNS OOID varchar2(50) path '@OriginatingObjectID'
, ROID varchar2(50) path '@RelatedObjectID'
, vAltCntInterestpercent varchar2(100) path 'InterestPercent'
)t1,
XMLTable('/Party[@id=$roid]' passing vAltcnt, t1.roid as "roid"
COLUMNS
vAltCntcity VARCHAR2(20) path 'City',
Partysyskey VARCHAR2(100) path 'PartySysKey',
vAltCntZip VARCHAR2(20) path 'Address/Zip',
vAltCntGovtID VARCHAR2(20) path 'GovtID',
vAltCntTelno VARCHAR2(20) path 'Phone[PhoneTypeCode/@tc=2]/DialNumber',
vAltCntemailaddr VARCHAR2(200) path 'EMailAddress/AddrLine',
vAltCntstats varchar2(20) path 'Client/ClientStatus/@tc',
vAltCntAdd1 varchar2(1000) path 'Address/Line1',
vAltCntAdd2 varchar2(1000) path 'Address/Line2',
vAltCntAdd3 varchar2(1000) path 'Address/Line3',
AltCntstate varchar2(100) path 'Address/AddressState',
AltCntcntry varchar2(100) path 'Address/AddressCountry',
vAltCntBRTH_DT date path 'Person/BirthDate',
vAltCntGender char(1) path 'Person/Gender/@tc',
vAltCntFaxno varchar2(100) path 'Phone[PhoneTypeCode/@tc=19]/DialNumber',
vAltCnturladdr varchar2(100) path 'URL/URLAddr',
AltCntorgFST_NM varchar2(100) path 'Person/FirstName',
AltCntorgLST_NM varchar2(100) path 'Person/LastName',
AltCntorgMID_NM varchar2(100) path 'Person/MiddleName',
AltCntorgPFX_NM varchar2(100) path 'Person/Prefix',
AltCntorgSUFX_NM varchar2(100) path 'Person/Suffix',
AltCntpartytypecode varchar2(10) path 'PartyTypeCode/@tc',
vAltCntdatarep varchar2(100) path '@DataRep'
) t
LOOP
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/@RelatedObjectID][PartyTypeCode/@tc=1]/Person/FirstName')
INTO vAltCntFirstnamechk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/@RelatedObjectID][PartyTypeCode/@tc=1]/Person/FirstName') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntFirstnamechkflag:='Y';
END;
end loop;
For this above code its not going to the exception.we are using this select statement to check whether that node existed or not.
If that node exists and value is not there, that time we are updating the table with the null value by using the vAltCntFirstnamechkflag value as like below in our procedure.
IF b.AltCntorgFST_NM IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' FST_NM ='''||b.AltCntorgFST_NM||''''||',';
ELSIF vAltCntFirstnamechkflag='N' AND vAltCntFirstnamechk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' FST_NM ='''||NULL||''''||',';
END IF;
Please find the below procedure what we are using could you please let me know is there any possibility to resolve this issue(if the tag like <firstname></firstname> that
time also it should not go to the exception).
CREATE OR REPLACE PROCEDURE CHBM_QA1.PR_CUSTOMERUPDATE(PIN_XML_DATA IN CLOB,po_vResponse OUT clob )
IS
xData XMLTYPE:=NULL;
vActivityCode VARCHAR2(100):=NULL;
vSubActivityCode VARCHAR2(100):=NULL;
ncode NUMBER(2):=NULL;
nErrcode NUMBER(10):=0;
vInfodesc VARCHAR2(1000):=NULL;
vStatusinfo VARCHAR2(1000):=NULL;
vStatus VARCHAR2(100):=NULL;
vOrgid VARCHAR2(100):=NULL;
vcity VARCHAR2(100):=NULL;
vAltCntcity VARCHAR2(20):=NULL;
vorgcity VARCHAR2(100):=NULL;
vAddressState VARCHAR2(100):=NULL;
vZip VARCHAR2(100):=NULL;
vAltCntZip VARCHAR2(100):=NULL;
vorgZip VARCHAR2(100):=NULL;
vGovtID VARCHAR2(100):=NULL;
vAltCntGovtID VARCHAR2(100):=NULL;
vorgGovtID VARCHAR2(100):=NULL;
vFullname VARCHAR2(200):=NULL;
norgid NUMBER:=0;
vTelno VARCHAR2(100):=Null;
vAltCntTelno VARCHAR2(100):=Null;
vOrgTelno VARCHAR2(100):=null;
nOrgcnt NUMBER:=0;
vemailaddr VARCHAR2(200):=null;
vAltCntemailaddr VARCHAR2(200):=null;
vorgemailaddr VARCHAR2(200):=null;
vFISC_YEAR_END_DT VARCHAR2(100);
vFiscalYearEndMoDaychkflag CHAR(1):='N';
vFiscalYearEndMoDaychk VARCHAR2(100):=NULL;
vGovtIDchkflag CHAR(1):='N';
vGovtIDchk VARCHAR2(100):=NULL;
vEMailAddresschkflag CHAR(1):='N';
vEMailAddresschk VARCHAR2(1000):=NULL;
vDialNumberchkflag CHAR(1):='N';
vAltCntDialNumberchkflag CHAR(1):='N';
vDialNumberchk VARCHAR2(100):=NULL;
vAltCntDialNumberchk VARCHAR2(100):=NULL;
vFaxnochkflag CHAR(1):='N';
vAltCntFaxnochkflag CHAR(1):='N';
vFaxnochk VARCHAR2(100):=NULL;
vAltCntFaxnochk VARCHAR2(100):=NULL;
vEMailAddressPchkflag CHAR(1):=NULL;
vAltCntEMailAddressPchkflag CHAR(1):=NULL;
vEMailAddressPchk VARCHAR2(200):=NULL;
vAltCntEMailAddressPchk VARCHAR2(200):=NULL;
vLastNamechkflag CHAR(1):='N';
vAltCntLastNamechkflag CHAR(1):='N';
vFirstNamechkflag CHAR(1):='N';
vAltCntFirstNamechkflag CHAR(1):='N';
vTaxidPchkflag CHAR(1):='N';
vAltCntTaxidPchkflag CHAR(1):='N';
vBusinessDescchkflag CHAR(1):='N';
vBusinessDescchk VARCHAR2(2000):=NUll;
vTaxidPchk VARCHAR2(200):=NULL;
vAltCntTaxidPchk VARCHAR2(200):=NULL;
vLastNamechk VARCHAR2(2000):=NULL;
vAltCntLastNamechk VARCHAR2(2000):=NULL;
vFirstNamechk VARCHAR2(2000):=NULL;
vAltCntFirstnamechk VARCHAR2(2000):=NULL;
vattdate VARCHAR2(50):=NULL;
dattdate DATE;
vAdd3Pchkflag CHAR(1):='N';
vAltCntAdd3Pchkflag CHAR(1):='N';
vOrgAdd3chkflag CHAR(1):='N';
vOrgAdd2chkflag CHAR(1):='N';
vAdd2Pchkflag CHAR(1):='N';
vAltCntAdd2Pchkflag CHAR(1):='N';
vOrgAdd3chk VARCHAR2(2000):=NULL;
vOrgAdd2chk VARCHAR2(2000):=NULL;
vAdd2Pchk VARCHAR2(2000):=NULL;
vAltCntAdd2Pchk VARCHAR2(2000):=NULL;
vAdd3Pchk VARCHAR2(2000):=NULL;
vAltCntAdd3Pchk VARCHAR2(2000):=NULL;
nADDR_ID NUMBER:=0;
cntry VARCHAR2(100):=NULL;
AltCntcntry VARCHAR2(100):=NULL;
orgcntry VARCHAR2(100):=NULL;
vAdd1 VARCHAR2(1000):=NULL;
vAdd2 VARCHAR2(1000):=NULL;
vAdd3 VARCHAR2(1000):=NULL;
vAltCntAdd1 VARCHAR2(1000):=NULL;
vAltCntAdd2 VARCHAR2(1000):=NULL;
vAltCntAdd3 VARCHAR2(1000):=NULL;
vorgAdd1 VARCHAR2(1000):=NULL;
vorgAdd2 VARCHAR2(1000):=NULL;
vorgAdd3 VARCHAR2(1000):=NULL;
state VARCHAR2(100):=NULL;
AltCntstate VARCHAR2(100):=NULL;
nptycnt NUMBER:=0;
orgstate VARCHAR2(100):=NULL;
vstats VARCHAR2(100):=NULL;
vAltCntstats VARCHAR2(100):=NULL;
norgvalue NUMBER:=0;
nPtyrolCon NUMBER:=0;
npsnid NUMBER:=0;
npsn NUMBER:=0;
dFISC_YEAR_END_DT date:=NULL;
Gender char(1):=NULL;
vAltCntGender char(1):=NULL;
vBRTH_DT VARCHAR2(100):=NULL;
vAltCntBRTH_DT VARCHAR2(100):=NULL;
BusinessDesc VARCHAR2(200):=NULL;
dBRTH_DT date:=NULL;
dAltCntBRTH_DT date:=NULL;
prmycnt VARCHAR2(100):=NULL;
vpsnstats VARCHAR2(100):=NULL;
vAltCntpsnstats VARCHAR2(100):=NULL;
vPartySysKey VARCHAR2(100):=NULL;
vFaxno VARCHAR2(100):=NULL;
vAltCntFaxno VARCHAR2(100):=NULL;
vorgFaxno VARCHAR2(100):=NULL;
nRlplptyid CHBM_PARTY_RELATIONSHIP.ROLE_PLAYR_PRTY_ID%TYPE:=NULL;
vurladdr VARCHAR2(100):=NULL;
vAltCnturladdr VARCHAR2(100):=NULL;
FST_NM VARCHAR2(100):=NULL;
orgFST_NM VARCHAR2(100):=NULL;
AltCntorgFST_NM VARCHAR2(100):=NULL;
LST_NM VARCHAR2(100):=NULL;
orgLST_NM VARCHAR2(100):=NULL;
AltCntorgLST_NM VARCHAR2(100):=NULL;
MID_NM VARCHAR2(100):=NULL;
orgMID_NM VARCHAR2(100):=NULL;
AltCntorgMID_NM VARCHAR2(100):=NULL;
PFX_NM VARCHAR2(100):=NULL;
orgPFX_NM VARCHAR2(100):=NULL;
AltCntorgPFX_NM VARCHAR2(100):=NULL;
SUFX_NM VARCHAR2(100):=NULL;
orgSUFX_NM VARCHAR2(100):=NULL;
AltCntorgSUFX_NM VARCHAR2(100):=NULL;
naddcnt NUMBER:=0;
nAltaddcnt NUMBER:=0;
norgseq NUMBER:=NULL;
nADDR_IDseq NUMBER:=NULL;
npsnidseq NUMBER:=NULL;
nAltCntpsnidseq NUMBER:=NULL;
vTransrefguid VARCHAR2(1000):=NULL;
nRecfound NUMBER:=0;
partytypecode varchar2(100):=null;
AltCntpartytypecode varchar2(100):=null;
RelationRoleCode VARCHAR2(100):=NULL;
cUpdateflag CHAR(1):='N';
vupdatequery CLOB:=null;
plancode varchar2(100):=null;
usercreated VARCHAR2(200):=null;
openeddate VARCHAR2(100);
openedtime varchar2(100);
vopeneddate VARCHAR2(100);
dopeneddate date;
naddrcnt NUMBER:=0;
ncnt1 number:=0;
ncnt2 number:=0;
ncnt3 number:=0;
ncnt4 number:=0;
ncnt5 number:=0;
ncnt6 number:=0;
nDelCnt1 number:=0;
nDelCnt2 number:=0;
nDelCnt3 number:=0;
nAltcnt4 number:=0;
nAltcnt5 number:=0;
nAltcnt6 number:=0;
nRelcnt NUMBER:=0;
nAltRelcnt NUMBER:=0;
ncnt7 NUMBER:=0;
nprscnt NUMBER:=0;
nAltprscnt NUMBER:=0;
nPlncnt NUMBER:=0;
npsncnt NUMBER:=0;
vaddupdatequery VARCHAR2(4000);
caddUpdateflag CHAR(1):='N';
vaddrupdatequery VARCHAR2(4000);
vAltCntaddrupdatequery VARCHAR2(4000);
caddrUpdateflag CHAR(1):='N';
cAltCntaddrUpdateflag CHAR(1):='N';
vpsnupdatequery VARCHAR2(4000);
vAltCntpsnupdatequery VARCHAR2(4000);
cpsnUpdateflag CHAR(1):='N';
cAltCntpsnUpdateflag CHAR(1):='N';
vCntInterestPercent VARCHAR2(200);
vAltCntInterestPercent VARCHAR2(200);
vCntdatarep varchar2(100);
vAltCntdatarep varchar2(100);
vAltcnt XMLTYPE:=NULL;
eParsererror EXCEPTION;
PRAGMA EXCEPTION_INIT(eParsererror,-31011);
eUniqueexception EXCEPTION;
PRAGMA EXCEPTION_INIT(eUniqueexception,-00001);
eplanexception EXCEPTION;
PRAGMA EXCEPTION_INIT(eplanexception,-02291);
eEventexception EXCEPTION;
PRAGMA EXCEPTION_INIT(eEventexception,-01400);
BEGIN
BEGIN
xData := XMLTYPE.createxml(PIN_XML_DATA);
END;
BEGIN
SELECT extractvalue(value(t),'/TXLifeRequest/TransRefGUID')
INTO vTransrefguid
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest'))) t
WHERE existsnode(value(t),'/TXLifeRequest/TransRefGUID')=1
AND extractvalue(value(t),'/TXLifeRequest/TransRefGUID') IS NOT NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ncode:=5;
nErrcode:=200;
vStatus:='FAILURE';
vStatusinfo:='General Data Error';
Raise_application_error(-20201,'Transrefguid does not exist');
END;
BEGIN
SELECT t.vActivityCode,
t.vSubActivityCode
INTO vActivityCode,
vSubActivityCode
FROM (
SELECT xData doc
FROM dual
) temp_table,
XMLTable ( '/TXLife/TXLifeRequest/OLifE' passing doc
COLUMNS
vActivityCode VARCHAR2(20) path 'Activity/ActivityCode',
vSubActivityCode VARCHAR2(20) path 'Activity/OLifEExtension/ActivityExtension/SubActivityCode'
) t;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ncode:=5;
nErrcode:=200;
vStatus:='FAILURE';
vStatusinfo:='RESULTINFO_DATA ';
Raise_application_error(-20201,'General Data Error');
END;
IF vActivityCode='CHBM10003' AND vSubActivityCode='CHBM20002' THEN
FOR b IN (
SELECT t.vAltCntcity vAltCntcity,
t.Partysyskey Partysyskey,
t.vAltCntZip vAltCntZip,
t.vAltCntGovtID vAltCntGovtID,
t.vAltCntTelno vAltCntTelno,
t.vAltCntemailaddr vAltCntemailaddr,
t.vAltCntstats vAltCntstats,
t.vAltCntAdd1 vAltCntAdd1,
t.vAltCntAdd2 vAltCntAdd2,
t.vAltCntAdd3 vAltCntAdd3,
t.AltCntstate AltCntstate,
t.AltCntcntry AltCntcntry,
t.vAltCntBRTH_DT vAltCntBRTH_DT,
t.vAltCntGender vAltCntGender,
t.vAltCntFaxno vAltCntFaxno,
t.vAltCnturladdr vAltCnturladdr,
t.AltCntorgFST_NM AltCntorgFST_NM,
t.AltCntorgLST_NM AltCntorgLST_NM,
t.AltCntorgMID_NM AltCntorgMID_NM,
t.AltCntorgPFX_NM AltCntorgPFX_NM,
t.AltCntorgSUFX_NM AltCntorgSUFX_NM,
t.AltCntpartytypecode AltCntpartytypecode,
t.vAltCntdatarep vAltCntdatarep,
t1.vAltCntInterestPercent vAltCntInterestPercent,
t1.ROID ROID
FROM (
SELECT xData doc FROM dual ) temp_table,
XMLTable ( '/TXLife/TXLifeRequest/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]' passing doc
COLUMNS OOID varchar2(50) path '@OriginatingObjectID'
, ROID varchar2(50) path '@RelatedObjectID'
, vAltCntInterestpercent varchar2(100) path 'InterestPercent'
)t1,
XMLTable('/Party[@id=$roid]' passing vAltcnt, t1.roid as "roid"
COLUMNS
vAltCntcity VARCHAR2(20) path 'City',
Partysyskey VARCHAR2(100) path 'PartySysKey',
vAltCntZip VARCHAR2(20) path 'Address/Zip',
vAltCntGovtID VARCHAR2(20) path 'GovtID',
vAltCntTelno VARCHAR2(20) path 'Phone[PhoneTypeCode/@tc=2]/DialNumber',
vAltCntemailaddr VARCHAR2(200) path 'EMailAddress/AddrLine',
vAltCntstats varchar2(20) path 'Client/ClientStatus/@tc',
vAltCntAdd1 varchar2(1000) path 'Address/Line1',
vAltCntAdd2 varchar2(1000) path 'Address/Line2',
vAltCntAdd3 varchar2(1000) path 'Address/Line3',
AltCntstate varchar2(100) path 'Address/AddressState',
AltCntcntry varchar2(100) path 'Address/AddressCountry',
vAltCntBRTH_DT date path 'Person/BirthDate',
vAltCntGender char(1) path 'Person/Gender/@tc',
vAltCntFaxno varchar2(100) path 'Phone[PhoneTypeCode/@tc=19]/DialNumber',
vAltCnturladdr varchar2(100) path 'URL/URLAddr',
AltCntorgFST_NM varchar2(100) path 'Person/FirstName',
AltCntorgLST_NM varchar2(100) path 'Person/LastName',
AltCntorgMID_NM varchar2(100) path 'Person/MiddleName',
AltCntorgPFX_NM varchar2(100) path 'Person/Prefix',
AltCntorgSUFX_NM varchar2(100) path 'Person/Suffix',
AltCntpartytypecode varchar2(10) path 'PartyTypeCode/@tc',
vAltCntdatarep varchar2(100) path '@DataRep'
) t
LOOP
IF b.vAltCntBRTH_DT IS NOT NULL THEN
dAltCntBRTH_DT:=to_date(b.vAltCntBRTH_DT,'yyyy-mm-dd');
END IF;
IF b.vAltCntdatarep != 'Removed' OR b.vAltCntdatarep IS NULL THEN
BEGIN
--------------Starting of CHBM_PERSON Table---------
IF b.vAltCntstats IS NOT NULL THEN
BEGIN
SELECT code_val_cd
INTO vAltCntpsnstats
FROM chbm_code_reference
WHERE tbl_nm='CHBM_PERSON'
AND col_nm='STAT_CD'
AND acord_cd =b.vAltCntstats;
EXCEPTION
WHEN OTHERS THEN
ncode :=5;
nErrcode :=2001;
vStatus :='FAILURE';
vStatusinfo :='RESULTINFO_DATA ';
vInfodesc :='Person status details are not available in code reference';
Raise_application_error(-20201,'Person status details are not available in code reference');
END;
END IF;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Phone[PhoneTypeCode/@tc=2]/DialNumber')
INTO vAltCntDialNumberchk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Phone[PhoneTypeCode/@tc=2]/DialNumber') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntDialNumberchkflag:='Y';
END;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Phone[PhoneTypeCode/@tc=19]/DialNumber')
INTO vAltCntFaxnochk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Phone[PhoneTypeCode/@tc=19]/DialNumber') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntFaxnochkflag:='Y';
END;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/FirstName')
INTO vAltCntFirstnamechk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/FirstName') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntFirstnamechkflag:='Y';
END;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/LastName')
INTO vAltCntLastNamechk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/Person/LastName') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntLastNamechkflag:='Y';
END;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/EMailAddress/AddrLine')
INTO vAltCntEMailAddressPchk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/EMailAddress/AddrLine') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntEMailAddressPchkflag:='Y';
END;
BEGIN
SELECT extractvalue(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/GovtID')
INTO vAltCntTaxidPchk
FROM TABLE (XMLSEQUENCE (EXTRACT (xData,'/TXLife/TXLifeRequest/OLifE'))) t
WHERE existsnode(value(t),'/OLifE/Party[@id=/OLifE/Relation[RelationRoleCode/@tc=150][Sequence=2]/b.ROID][PartyTypeCode/@tc=1]/GovtID') =1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAltCntTaxidPchkflag:='Y';
END;
IF b.Partysyskey IS NOT NULL THEN
nAltCntpsnidseq:=b.Partysyskey;
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||'UPDATE CHBM_PERSON SET';
IF dAltCntBRTH_DT IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' brth_dt ='''||dAltCntBRTH_DT||''''||',';
END IF;
IF b.vAltCntGender IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' GEND_CD ='''||b.vAltCntGender||''''||',';
END IF;
IF b.vAltCntGovtID IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' TAX_ID ='''||b.vAltCntGovtID||''''||',';
ELSIF vAltCntTaxidPchkflag='N' AND vAltCntTaxidPchk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' TAX_ID ='''||NULL||''''||',';
END IF;
IF b.vAltCntTelno IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' TEL_NO ='''||b.vAltCntTelno||''''||',';
ELSIF vAltCntDialNumberchkflag='N' AND vAltCntDialNumberchk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' TEL_NO ='''||NULL||''''||',';
END IF;
IF b.vAltCntemailaddr IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' EMAIL_ADR ='''||b.vAltCntemailaddr||''''||',';
ELSIF vAltCntEMailAddressPchkflag='N' AND vAltCntEMailAddressPchk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' EMAIL_ADR ='''||NULL||''''||',';
END IF;
IF b.vAltCntFaxno IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' FAX_NO ='''||b.vAltCntFaxno||''''||',';
ELSIF vAltCntFaxnochkflag='N' AND vAltCntFaxnochk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' FAX_NO ='''||NULL||''''||',';
END IF;
IF vAltCntpsnstats IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' STAT_CD ='''||vAltCntpsnstats||''''||',';
END IF;
IF b.AltCntorgLST_NM IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' LST_NM ='''||b.AltCntorgLST_NM||''''||',';
ELSIF vAltCntLastNamechkflag='N' AND vAltCntLastNamechk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' LST_NM ='''||NULL||''''||',';
END IF;
IF b.AltCntorgFST_NM IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' FST_NM ='''||b.AltCntorgFST_NM||''''||',';
ELSIF vAltCntFirstnamechkflag='N' AND vAltCntFirstnamechk IS NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' FST_NM ='''||NULL||''''||',';
END IF;
IF b.AltCntorgMID_NM IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' MID_NM ='''||b.AltCntorgMID_NM||''''||',';
END IF;
IF b.AltCntorgPFX_NM IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' PFX_NM ='''||b.AltCntorgPFX_NM||''''||',';
END IF;
IF b.AltCntorgSUFX_NM IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' SUFX_NM ='''||b.AltCntorgSUFX_NM||''''||',';
END IF;
IF b.vAltCnturladdr IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' WEB_SITE_ID ='''||b.vAltCnturladdr||''''||',';
END IF;
IF dopeneddate IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' LST_UPDT_DT ='''||dopeneddate||''''||',';
END IF;
IF usercreated IS NOT NULL THEN
cAltCntpsnUpdateflag:='Y';
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' LST_UPDT_BY_USER_ID ='''||usercreated||''''||',';
END IF;
vAltCntpsnupdatequery := SUBSTR(vAltCntpsnupdatequery,1,instr(vAltCntpsnupdatequery,',',-1,1)-1);
vAltCntpsnupdatequery:=vAltCntpsnupdatequery||' WHERE psn_id='''||nAltCntpsnidseq||'''';
IF cAltCntpsnUpdateflag='Y' THEN
EXECUTE IMMEDIATE vAltCntpsnupdatequery;
vAltCntpsnupdatequery := NULL;
nAltcnt4:=Sql%rowcount;
END IF;
END IF;
END LOOP;
END IF;
END;
Regards,
Jyothirmai -
We have a package within which we call a java stored procedure. The purpose of this java stored proc is to convert an input xml and insert the data into a flat structured table.The parser class used in this org.apache.xerces.parsers.SAXParser.
We do not have issues when we call this for one time. But when a call is made to the main package second time in the same session we are getting the below error.
'Could not load XML parser: SAX2 driver class org.apache.xerces.parsers.SAXParser not found'
Any help to fix this error would be highly appreciatedArun,
Maybe JDBC logging will help?
You can find a link to a white paper about it from this Web page:
http://www.oracle.com/technology/tech/java/sqlj_jdbc/index.html
Of-course, you do realize that the Oracle database has built-in XML capability.
Have you seen this Web page?
http://www.oracle.com/technology/tech/xml/index.html
Good Luck,
Avi. -
I get the following output in the log (GlassFish V3), when calling the web service (from Crystal Reports):
SEVERE: Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 31))
at [row,col {unknown-source}]: [1,1]
com.sun.xml.ws.protocol.soap.MessageCreationException: Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 31))
at [row,col {unknown-source}]: [1,1]
at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:292)
at com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:276)
at com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:93)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:432)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:75)Has anyone seen this, and how can I resolve it? The SOAP message is well-formed when printed so I assume there's a hidden character, e.g. byte-order-mark causing the issue but why does the parser not handle this?my guess is that you have a character entity (e.g. & #31;) in your xml document for a character which is invalid in xml (most of the control characters below 32 are invalid in xml). the annoyance is that the java xml serializer will happily encode said character despite the fact that it is illegal in an xml (1.0) document. you will only see the error when you parse the document (as you are seeing).
Edited by: jtahlborn on Sep 17, 2009 2:45 PM -
PHP Type Hinting and Flex Issue
From the PHP docs, "PHP 5 introduces Type Hinting. Functions are now able to force parameters to be objects (by specifying the name of the class in the function prototype) or arrays (since PHP 5.1)." So i have a function that has a bunch of parameters setup with type hinting. When i use the connect to dataservice wizard everything works great, it even gets the objects hinted in the parameters and adds them to my flex DataObjects. Now if in flex if I create a new instance of this object, (var activeSync:DO_ActiveSyncServer= new DO_ActiveSyncServer();) and then pass it to my newly added data service i get the below error message.
Catchable fatal error: Argument 2 passed to SetupWizard::CreateSetup() must be an instance of DO_ActiveSyncServer, instance of stdClass given in SetupWizard.php on line 29
Anyone ever come across this issue before or know how to fix it? It would seem that Flex passes this stdClass type no matter what to PHP for complex objects.
ThanksFrom the PHP docs, "PHP 5 introduces Type Hinting. Functions are now able to force parameters to be objects (by specifying the name of the class in the function prototype) or arrays (since PHP 5.1)." So i have a function that has a bunch of parameters setup with type hinting. When i use the connect to dataservice wizard everything works great, it even gets the objects hinted in the parameters and adds them to my flex DataObjects. Now if in flex if I create a new instance of this object, (var activeSync:DO_ActiveSyncServer= new DO_ActiveSyncServer();) and then pass it to my newly added data service i get the below error message.
Catchable fatal error: Argument 2 passed to SetupWizard::CreateSetup() must be an instance of DO_ActiveSyncServer, instance of stdClass given in SetupWizard.php on line 29
Anyone ever come across this issue before or know how to fix it? It would seem that Flex passes this stdClass type no matter what to PHP for complex objects.
Thanks -
XML Parse issues when using Network Data Model LOD with Springframework 3
Hello,
I am having issues with using using NDM in conjuction with Spring 3. The problem is that there is a dependency on the ConfigManager class in that it has to use Oracle's xml parser from xmlparserv2.jar, and this parser seems to have a history of problems with parsing Spring schemas.
My setup is as follows:
Spring Version: 3.0.1
Oracle: 11GR2 and corresponding spatial libraries
Note that when using the xerces parser, there is no issue here. It only while using Oracle's specific parser which appears to be hard-coded into the ConfigManager. Spring fortunately offers a workaround, where I can force it to use a specific parser when loading the spring configuration as follows:
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl But this is an extra deployment task we'd rather not have. Note that this issue has been brought up before in relation to OC4J. See the following link:
How to change the defaut xmlparser on OC4J Standalone 10.1.3.4 for Spring 3
My question is, is there any other way to configure LOD where it won't have the dependency on the oracle parser?
Also, fyi, here is the exception that is occurring as well as the header for my spring file.
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
Line 11 in XML document from URL [file:/C:/projects/lrs_network_domain/service/target/classes/META-INF/spring.xml] is invalid;
nested exception is oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
[snip]
... 31 more
Caused by: oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425)
at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:287)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:331)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:222)
at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)Here is my the header for my spring configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">Thanks, TomI ran into this exact issue while trying to get hibernate and spring working with an oracle XMLType column, and found a better solution than to use JVM arguments as you mentioned.
Why is it happening?
The xmlparserv2.jar uses the JAR Services API (Service Provider Mechanism) to change the default javax.xml classes used for the SAXParserFactory, DocumentBuilderFactory and TransformerFactory.
How did it happen?
The javax.xml.parsers.FactoryFinder looks for custom implementations by checking for, in this order, environment variables, %JAVA_HOME%/lib/jaxp.properties, then for config files under META-INF/services on the classpath, before using the default implementations included with the JDK (com.sun.org.*).
Inside xmlparserv2.jar exists a META-INF/services directory, which the javax.xml.parsers.FactoryFinder class picks up and uses:
META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines oracle.xml.jaxp.JXDocumentBuilderFactory as the default)
META-INF/services/javax.xml.parsers.SAXParserFactory (which defines oracle.xml.jaxp.JXSAXParserFactory as the default)
META-INF/services/javax.xml.transform.TransformerFactory (which defines oracle.xml.jaxp.JXSAXTransformerFactory as the default)
Solution?
Switch all 3 back, otherwise you'll see weird errors. javax.xml.parsers.* fix the visible errors, while the javax.xml.transform.* fixes more subtle XML parsing (in my case, with apache commons configuration reading/writing).
QUICK SOLUTION to solve the application server startup errors:
JVM Arguments (not great)
To override the changes made by xmlparserv2.jar, add the following JVM properties to your application server startup arguments. The java.xml.parsers.FactoryFinder logic will check environment variables first.
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
However, if you run test cases using @RunWith(SpringJUnit4ClassRunner.class) or similar, you will still experience the error.
BETTER SOLUTION to the application server startup errors AND test case errors:
Option 1: Use JVM arguments for the app server and @BeforeClass statements for your test cases.
System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
System.setProperty("javax.xml.parsers.SAXParserFactory","com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
System.setProperty("javax.xml.transform.TransformerFactory","com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");
If you have a lot of test cases, this becomes painful.
Option 2: Create your own Service Provider definition files in the compile/runtime classpath for your project, which will override those included in xmlparserv2.jar.
In a maven spring project, override the xmlparserv2.jar settings by creating the following files in the %PROJECT_HOME%/src/main/resources directory:
%PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl as the default)
%PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.SAXParserFactory (which defines com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl as the default)
%PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory (which defines com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl as the default)
These files are referenced by both the application server (no JVM arguments required), and solves any unit test issues without requiring any code changes.
This is a snippet of my longer solution for how to get hibernate and spring to work with an oracle XMLType column, found on stackoverflow. -
Syslog Collector w/ File Connector Parsing Issue
Dear all,
Recently, I had a requirement from a customer.
They have various Linux systems. They want to pass all syslog to
sentinel, but not by syslog connector for some reasons.
Therefore, they throw us those syslog in text file, and ftp it for
sentinel reading.
The problem is that this.RXBufferstring could not be 100% parsed in all
kinds of messages. Sometimes there would be error.
But when they use Syslog connector. Every event fields seem to be parsed
correctly.
So is there any methods to use syslog collector w/file connector
correctly?
Or how do people handle this kind of problem?
Please assist. Thanks a lot.
andy_ho
andy_ho's Profile: https://forums.netiq.com/member.php?userid=4568
View this thread: https://forums.netiq.com/showthread.php?t=51453On 08/01/2014 04:26 AM, andy ho wrote:
>
> Dear all,
>
> Recently, I had a requirement from a customer.
>
> They have various Linux systems. They want to pass all syslog to
> sentinel, but not by syslog connector for some reasons.
> Therefore, they throw us those syslog in text file, and ftp it for
> sentinel reading.
>
> The problem is that this.RXBufferstring could not be 100% parsed in all
> kinds of messages. Sometimes there would be error.
> But when they use Syslog connector. Every event fields seem to be parsed
> correctly.
>
> So is there any methods to use syslog collector w/file connector
> correctly?
> Or how do people handle this kind of problem?
No supported way, no. The testing between collector and connector is done
so that certain methods are easy, reliable, and supported. Just because
data are grabbed from one media (network, syslog specifically) and written
to another (file) does not mean that nothing else is changed, and the
syslog collectors may be assuming other properties (such as the event
source IP address) are there when they are not.
You can probably make this work, but you'll likely need to customize the
collector in order to do it. The alternative is to use the debugging
feature of the collector to find out what is wrong with certain events and
possibly modify them on the event source side. Either way, you're going
to have a scenario that is not supported so it may be worth revisiting the
requirement to use a file vs. syslog just in case support matters more
than the "for some reasons" that they want to go with a file.
Good luck.
If you find this post helpful and are logged into the web interface,
show your appreciation and click on the star below... -
OLAP universe object parsing issue
Hi,
We have recently upgraded to Business Objects XI 3.1 sp3 with SAP 7.1 sp5 and SAP integration kit and all the transports are done for installation.
Using enterprise authentication i am logging into universe designer and then created a connection using SAP BW client on BEx query by providing all the login parameters (sap login usr name and pwd, application server name etc).
Universe is created and everything is fine, but when i tried to create a calculated measure i am unable to parse object.
i created a simple measure like
<EXPRESSION>(@Select(Key Figures\Orders) * @Select(Key Figures\Quantity))</EXPRESSION>
when i parse i am getting " XML expression is correct,however the MDX expression is not parsed in this process. (UNV 00050)"
when i used this calculated measure in webi, column is empty.how ever other objects are working fine in webi report and i could able to perform all calculations in webi.
Can any one tell me what could be the issue with object parsing.
Thanks,
HarshaHi,
I tried all the syntaxes but still the measure is not parsing, before upgrading In BO XI 3.1 sp2 i have created calculated measures and there was no issue.but after the upgrading to BO XI 3.1 sp3 i am not able to create calculated measures in universe I am using BEx query as source i have created some RKF's and CKF's in BEx, and i need to create some measures in universe as per reqmt.
I ran the report including the measure with below formula
<EXPRESSION>(@Select(Key Figures\Orders) * @Select(Key Figures\Quantity))</EXPRESSION>
MDX generated is as below:
WITH MEMBER [4IVR0WPP0WQB4EFAXRVX90OQ4].[BD4D9550-F4CD-4289-AA,CC,A4,21,82,3B,1B,EB] AS ' ([4IVR0WPP0WQB4EFAXRVX90OQ4].[4IW2HB8NU8VBIMMCXYNRQZNZG] *
[4IVR0WPP0WQB4EFAXRVX90OQ4].[4IW2HBO0W62QJVP99MSGB3LF0]) ' SELECT { [4IVR0WPP0WQB4EFAXRVX90OQ4].[BD4D9550-F4CD-4289-AA,CC,A4,21,82,3B,1B,EB],
[4IVR0WPP0WQB4EFAXRVX90OQ4].[4IW2HB8NU8VBIMMCXYNRQZNZG], [4IVR0WPP0WQB4EFAXRVX90OQ4].[4IW2HBO0W62QJVP99MSGB3LF0] } ON COLUMNS , NON EMPTY
[CS_LOCN].[LEVEL01].MEMBERS ON ROWS FROM [MP_003_BO] SAP VARIABLES [!V000006] INCLUDING [0FISCPER3].[001] : [0FISCPER3].[008] [0P_FYEAR] INCLUDING
[0FISCYEAR].[Z12010] [!V000003] INCLUDING [CS_VAC].[020]
here the MDX is incorrect the calculated measure is appearing before the SELECT statement in above MDX.
I would like to know that any MDX driver is missing and also how to debug this issue.
Thanks,
Harsha
Maybe you are looking for
-
Return Code = 19 , Adobe Serialization
Hey all. I downloaded Creative Suite 6 for Windows last year from the University of Maryland Terpware service and need to serialize it. They offer these instructions: Download the 2 files, prov.xml and adobe_prtk Save files to an easy found location
-
How to stop the spinning ball/pizza that is stalling repairs to project on imovie 09? on macosx10.5.8 using iomega and superspeed ext h.d. as storage for the events and projects archive of a wedding video that has had audio sync problems on all share
-
I don't see the bubble where people are typing in iMessage
For some reason I don't see the little bubble where people are typing in iMessage. I've already tried it with other people in iMessage, but I still don't see it. Can someone help me and resolve this issue for me?! Thanks.
-
Hi SDN, We have a display only char with SIDs and some of the SIDs are missing with relation to an ODS. Remember this char has no master or text data, just a SID table. Anyone has a code sample how to fix SID values between an ODS and a display only
-
Space Management - DBMS_SPACE.OBJECT_GROWTH_TREND - how to execute
I am exploring the use of the package DBMS_SPACE and in particular the function OBJECT_GROWTH_TREND. I have two problems at the moment. I am only able to execute this function when I am logged in as SYS. I would like to run the function as another us