Error: ORA-29532: Java call terminated by uncaught Java exception:
Anyone have this similar problem of
ORA-29532: Java call terminated by uncaught Java exception:
javax.xml.rpc.soap.SOAPFaultException: Caught exception while handling request:
deserialization error: XML reader error: unexpected character content:
"A"
The service is running fine in a browser and returns the date. When I run it using the PL/SQL it has the error mentioned above.
I am running the following:
CREATE OR REPLACE FUNCTION GetDate_wb( p_dummy IN VARCHAR2 )
RETURN DATE
AS
l_service sys.UTL_DBWS.service;
l_call sys.UTL_DBWS.call;
l_result ANYDATA;
l_wsdl_url VARCHAR2(1024);
l_service_name VARCHAR2(200);
l_operation_name VARCHAR2(200);
l_input_params sys.UTL_DBWS.anydata_list;
l_port sys.UTL_DBWS.qname := 8988;
BEGIN
l_wsdl_url := 'http://org-lblakisa1:8988/BPEL_OD-LoginWS-context-root/getDate1SoapHttpPort?WSDL';
l_service_name := 'getDate1';
l_operation_name := 'getDate';
l_service := sys.UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_name);
l_call := sys.UTL_DBWS.create_call (
service_handle => l_service,
port_name => NULL,
operation_name => l_operation_name);
l_input_params(1) := ANYDATA.ConvertVarchar2(p_dummy);
l_result := sys.UTL_DBWS.invoke (
call_handle => l_call,
input_params => l_input_params);
sys.UTL_DBWS.release_call (call_handle => l_call);
sys.UTL_DBWS.release_service (service_handle => l_service);
RETURN ANYDATA.AccessDate(l_result);
END;
/
Problem is resolved... We had a version issue in that 10.1.3 web service is not compatible. 10.1.2 worked.
Similar Messages
-
"ORA-29532: Java call terminated by uncaught Java exception
Dear Oracle:
I am trying to establish an HTTPS connection from a Java stored
procedure that is wrapped in a PL/SQL procedure and loaded into a
Package. We are running on Oracle 8.1.7.
My Java code compiles and runs fine when run stand-alone outside
Oracle; I can establish the connection to a secure server and talk to
the server. However when I load this Java class (using the loadjava
utility) this class can no longer run and I get a the following
exception:
"ORA-29532: Java call terminated by uncaught Java exception:
javax.net.ssl.SSLException: SSL handshake failed:
X509CertChainIncompleteErr"
I have tried loading the JSSE from Sun and I still get the same error.
Searching in the Discussing Forums I found the following link (which
describes a procedure that logs into the UPS secure server site and
grabs some XML) http://osi.oracle.com/~mbpierma/SSL_Java_DB.html .
This code works ok if we try to connect to UPS server. However this
code doesn't work if we try to log in to a different server (such as
???). If I modify this code slightly and try to log to any other
sever server I get the same error as the one above. Investigation
lead us to understand that the certificate at the UPS web site is a
self-signed certificate -- not one generated by a major 'recognized'
authority such as Verisign or Thawte.
Further research pointed me to the following URL
http://www.znow.com/sales/oracle/network.816/a76932/appf_ora.htm#619367
This URL has the documentation for JAVA SSL for 8.1.6 which I figure
I could read and try to make it work in 8.1.7.
I looked at your Secure Hello World example, however the code is
missing the most critical parts of the whole example, it does not
specify where the certificate or any of the security settings come
from (see the attached JavaCertExample.txt file).
So, my questions are the following:
1) What should I do to avoid the error mentioned above?
2) Do you have a sample piece of code that describes how to make a
HTTPS connection using a Java stored procedure?
3) Can I make the HTTPS connection using a URL class and not using
sockets directly?
4) Do I need to load the JSEE provided by Sun?
5) Will the solution be different for Oracle 9i?
// SecureHelloClient.java
import java.net.*;
import java.io.*;
import java.util.*;
import javax.net.ssl.*;
import javax.security.cert.X509Certificate;
import oracle.security.ssl.OracleSSLCredential;
import oracle.security.ssl.OracleSSLSocketFactory;
import oracle.security.ssl.OracleSSLProtocolVersion;
import oracle.security.ssl.OracleSSLSession;
public class SecureHelloClient
public static void main(String argv[])
String hostName = "localhost";
if(argv.length != 0)
String hostName = argv[0];
// Set the SSLSocketFactoryImpl class as follows:
java.util.Properties prop = System.getProperties();
prop.put("SSLSocketFactoryImplClass",
"oracle.security.ssl.OracleSSLSocketFactoryImpl");
try
// Get the default socket factory
OracleSSLSocketFactory sSocFactory
= (OracleSSLSocketFactory)SSLSocketFactory.getDefault();
sSocFactory.setSSLProtocolVersion(OracleSSLProtocolVersion.SSL_Version_3_0);
OracleSSLCredential sslCredObj = new OracleSSLCredential();
// Where did these values come from? caCert, userCert, trustedCert,
// Set the certificate chain and private key if the
// server requires client authentication
sslCredObj.addCertChain(caCert)
sslCredObj.addCertchain(userCert)
sslCredObj.setPrivateKey(userPvtKey, userPassword)
// Populate credential object
sslCredObj.addTrustedCert(trustedCert);
sSocFactory.setSSLCredentials(sslCredObj);
// Create the socket using factory
SSLSocket jsslSoc =
(SSLSocket)sSocFactory.createSocket(hostName, 8443);
String [] ciphers = jsslSoc.getSupportedCipherSuites() ;
// Select the ciphers you want and put them.
// Here we will put all availabel ciphers
jsslSoc.setEnabledCipherSuites(ciphers);
// We are creating socket in client mode
jsslSoc.setUseClientMode(true);
// Do SSL handshake
jsslSoc.startHandshake();
// Print negotiated cipher
System.out.println("Negotiated Cipher Suite: "
+jsslSoc.getSession().getCipherSuite());
System.out.println("");
X509Certificate[] peerCerts
= ((javax.net.ssl.SSLSocket)jsslSoc).getSession().getPeerCertificateChain();
if (peerCerts != null)
System.out.println("Printing server information:");
for(int i =0; i ? peerCerts.length; i++)
System.out.println("Peer Certificate ["+i+"] Information:");
System.out.println("- Subject: " + peerCerts.getSubjectDN().getName());
System.out.println("- Issuer: " + peerCerts[i].getIssuerDN().getName());
System.out.println("- Version: " + peerCerts[i].getVersion());
System.out.println("- Start Time: " + peerCerts[i].getNotBefore().toString());
System.out.println("- End Time: " + peerCerts[i].getNotAfter().toString());
System.out.println("- Signature Algorithm: " + peerCerts[i].getSigAlgName());
System.out.println("- Serial Number: " + peerCerts[i].getSerialNumber());
else
System.out.println("Failed to get peer certificates");
// Now do data exchange with client
OutputStream out = jsslSoc.getOutputStream();
InputStream in = jsslSoc.getInputStream();
String inputLine, outputLine;
byte [] msg = new byte[1024];
outputLine = "HELLO";
out.write(outputLine.getBytes());
int readLen = in.read(msg, 0, msg.length);
if(readLen > 0)
inputLine = new String(msg, 0, readLen);
System.out.println("");
System.out.println("Server Message:");
System.out.println(inputLine );
else
System.out.println("Can't read data from client");
// Close all sockets and streams
out.close();
in.close();
jsslSoc.close();
catch(SSLException e)
System.out.println("SSL exception caught:");
e.printStackTrace();
catch(IOException e)
System.out.println("IO exception caught:");
e.printStackTrace();
catch(Exception e)
System.out.println("Exception caught:");
e.printStackTrace();Hi,
I have the same problem.
Is some ORACLE guru that can help us ?
We need to communicate with some servlet
via POST method of https (SSL3)
and with using private certificate on the client site.
We need furthermore allow using of some proxy.
Client site is realized as set of stored procedures within ORACLE 8.1.7
In this time I am able to communicate with server without SSL and certificate
using package utl_tcp
(but with this solution without certificate is our customer not satisfied -:))
ORACLE help us please !
Pavel Pospisil
[email protected] -
Hi,
I have a requirement of calling BI webservices from Plsql stored procedure. I generated all my wsdl java classes and loaded them into the database. However, when I tried to call one of my java class using stored procedure, it is giving me"ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError".
*Cause: A Java exception or error was signaled and could not be
resolved by the Java code.
*Action: Modify Java code, if this behavior is not intended.
But all my dependency classes are present in database as java class objects and are valid. Can some one help me out of this?Stiphane,
You can look in USER_ERRORS to see if there's anything more specific reported by the compiler. But, it could also be the case that everything's OK (oddly enough). I loaded the JavaMail API in an 8.1.6 database and also got bytecode verifier errors, but it ran fine. Here are the errors I got when loading Sun's activation.jar, which ended up not being a problem:
ORA-29552: verification warning: at offset 12 of <init> void (java.lang.String, java.lang.String) cannot access class$java$io$InputStream
verifier is replacing bytecode at <init> void (java.lang.String, java.lang.String):12 by a throw at offset 18 of <init> void (java.lang.String, java.lang.String) cannot access class$java$io$InputStream
verifier is replacing bytecode at <init> void (java.lang.String, java.lang.String):18 by a throw at offset 30 of <init> void (java.lang.String, java.lang.String) cannot access class$java$io$InputStream
verifier is replacing bytecode at <init> void (java.lang.String, java.lang.String):30 by a throw
Hope this helps,
-Dan
http://www.compuware.com/products/devpartner/db/oracle_debug.htm
Debug PL/SQL and Java in the Oracle Database -
Java call terminated by uncaught Java exception: java.lang.NullPointerExcep
i have written this program of adding file items using wwsbr_api.add_item but,
1 declare
2 l_new_item_master_id number;
3 l_caid number := 53;
4 l_folder_id number := 50279;
5 begin
6 select c.id, f.id
7 into l_caid, l_folder_id
8 from portal.wwsbr_all_content_areas c,
9 portal.wwsbr_all_folders f
10 where c.id = f.caid and c.name = 'S_T_PAGE'
11 and f.name = 'S_PAGE';
12 --portal.wwctx_api_private.set_context('PORTAL');
13 l_new_item_master_id := portal.wwsbr_api.add_item(
14 p_caid => l_caid,
15 p_folder_id => l_folder_id,
16 p_display_name => 'simple file item',
17 p_type_id => portal.wwsbr_api.ITEM_TYPE_FILE,
18 p_type_caid => portal.wwsbr_api.SHARED_OBJECTS,
19 p_region_id => 4571,
20 p_file_filename => 'D:\ora\training\html\frame.html'
21 );
22 -- process cache invalidation messages
23 portal. wwpro_api_invalidation.execute_cache_invalidation;
24* end;
SQL> /
this program is showing the following exception. kindly give the solution urgently..........
declare
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NullPointerException
ORA-06512: at "PORTAL.WWSBR_API", line 37
ORA-06512: at "PORTAL.WWSBR_API", line 610
ORA-06512: at line 13can any one of u please give me the reply to the above error,
urgently............. -
Blob writing error ORA-29532 Java call terminated Unsupported feature
Hi there,
I've got the following Java code which tries to write to a BLOB file. It's a version of some code to extract files from a zip archive, but with everything but the erroring call stripped out:
create or replace and compile java source named zipunpack as
package org.bristol.cyps;
import oracle.sql.BLOB;
import java.util.zip.*;
public class ZipUnpack
public static int unpack(BLOB ziparray[], String filename, BLOB filearray[])
throws java.sql.SQLException, java.io.IOException
BLOB file = filearray[0];
java.io.OutputStream fileout = file.setBinaryStream(0L);
return 1;
This is published as follows:
create or replace function zip_unpack (
pio_zip in out nocopy blob
, pi_filename in varchar2
, pio_file in out nocopy blob
) return number as language java
name 'org.bristol.cyps.ZipUnpack.unpack(oracle.sql.BLOB[], java.lang.String, oracle.sql.BLOB[]) return java.lang.Integer';
And called like so:
procedure send_zip_file (
pi_zip in out nocopy blob
, pi_filename in varchar2
) is
file blob;
completed integer;
begin
dbms_lob.createtemporary (
lob_loc => file
, cache => false
, dur => dbms_lob.call
completed := zip_unpack(pi_zip, pi_filename, file);
if completed > 0 then
bare_html.print_blob(file);
else
htp.print('File "' || pi_filename || '" not found');
end if;
end;
This, as far as I can tell from the documentation, should work. Unfortunately, though, it generates an error:
ORA-29532: Java call terminated by uncaught Java exception: java.sql.SQLException: Unsupported feature
The particular line which is causing the error is the "java.io.OutputStream fileout = file.setBinaryStream(0L);" If I remove this, it runs fine. I'm flumoxed as to why this might be causing an "Unsupported feature" exception when it's documented as being supported. Can anyone shed any light?
Cheers,
Robert
Message was edited for more clarityHi,
It looks like you are not using 10g JDBC. java.sql.Blob.setBinaryStream is a JDBC 3.0 method. In 9iR2 we added support for jdk14 and added stub methods for JDBC 3.0 behavior without fully implementing them. 10gR1 was the first version where the JDBC3.0 methods were fully supported.
The workaround is to use the Oracle proprietary method oracle.sql.BLOB.getBinaryOutputStream
Kuassi, http://db360.blogspot.com -
Depoly error ORA-29532, ORA-06512
Hi all,
When I deploying tables and mappings, I get the following error message:
ORA-29532: Java call terminated by uncaught Java exception: oracle.jdbc.driver.OracleSQLException: ORA-28239: no key provided
ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 40
ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT", line 153
ORA-06512: at "OWBRTR2.WB_RT_SERVICE_CONTROL", line 286
ORA-06512: at "OWBRTR2.WB_RT_SERVICE_CONTROL", line 314
ORA-06512: at line 1
We are in RAC environment. I did some search for similar error messages, and upon the previous replies, I copy rtrepos.properties to all the cluster nodes. Actually, I get this error message after the first couple of tables deployments, which are all going correctly. It seems this error comes out randomly.
any idea of how to fix it?
thanks so much.Hi,
you told that error appears randomly.
I guess that this problem occurs when you connect from OWB to non-primary RAC node (primary/first in sense of OWB repository - it is node where OWB repos.assistant started for initial creating of repository).
So when you guarantee connecting from OWB to primary node you maybe resolve problem.
Minimal db instance configuration is disabling load balancing at server and client side.
Regards,
Oleg -
SDO_UTIL.TO_WKTGEOMETRY Error ORA-29532
Hello everyone,
when I try to execute this sql code
DECLARE
wkbgeom BLOB;
wktgeom CLOB;
val_result VARCHAR2(5);
geom_result SDO_GEOMETRY;
geom SDO_GEOMETRY;
BEGIN
select * into wktgeom
from system.app;
geom_result := SDO_UTIL.FROM_WKTGEOMETRY(wktgeom);
wktgeom := SDO_UTIL.TO_WKTGEOMETRY(geom_result);
DBMS_OUTPUT.PUT_LINE('To WKT geometry result = ' || TO_CHAR(wktgeom));
END;
I've got this error:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.RuntimeException: oracle.spatial.util.GeometryExceptionWithContext: Unsupported collection element: elemInfo type 2003
ORA-06512: at "MDSYS.SDO_UTIL", line 2421
ORA-06512: at "MDSYS.SDO_UTIL", line 2443
ORA-06512: at line 13
the wktgeom is a GEOMETRYCOLLECTION() of polygon
someone can help me?Can you supply the SDO_GTYPE and SDO_ELEM_INFO for the geometry you are trying to convert please?
regards
Simon -
Today, I received this error when I re-added two email accounts that are tied in to my domain. The error is: "Terminating app due to uncaught exception 'MFSQLiteException', reason: 'inserting mailbox url' abort() called terminating with uncaught exception of type NSException"
Two days ago, at my wits end with email issues, I googled how to Reset Mail.app and followed the recommendation found here: https://discussions.apple.com/thread/2266399?tstart=0
That's. all. I've. done.
What should I do correct the error I'm receiving when adding my email accounts?Launch the Console application in any of the following ways:
☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
☞ Open LaunchPad. Click Utilities, then Console in the icon grid.
Step 1
For this step, the title of the Console window should be All Messages. If it isn't, select
SYSTEM LOG QUERIES ▹ All Messages
from the log list on the left. If you don't see that list, select
View ▹ Show Log List
from the menu bar at the top of the screen.
In the top right corner of the Console window, there's a search box labeled Filter. Initially the words "String Matching" are shown in that box. Enter the name of the crashed application or process. For example, if iTunes crashed, you would enter "iTunes" (without the quotes.)
Each message in the log begins with the date and time when it was entered. Select the messages from the time of the last crash, if any. Copy them to the Clipboard by pressing the key combination command-C. Paste into a reply to this message by pressing command-V.
☞ The log contains a vast amount of information, almost all of which is irrelevant to solving any particular problem. When posting a log extract, be selective. A few dozen lines are almost always more than enough.
Please don't indiscriminately dump thousands of lines from the log into this discussion.
Please don't post screenshots of log messages—post the text.
☞ Some private information, such as your name, may appear in the log. Anonymize before posting.
Step 2
In the Console window, select
DIAGNOSTIC AND USAGE INFORMATION ▹ User Diagnostic Reports
(not Diagnostic and Usage Messages) from the log list on the left. There is a disclosure triangle to the left of the list item. If the triangle is pointing to the right, click it so that it points down. You'll see a list of crash reports. The name of each report starts with the name of the process, and ends with ".crash". Select the most recent report related to the process in question. The contents of the report will appear on the right. Use copy and paste to post the entire contents—the text, not a screenshot.
I know the report is long, maybe several hundred lines. Please post all of it anyway.
If you don't see any reports listed, but you know there was a crash, you may have chosen Diagnostic and Usage Messages from the log list. Choose DIAGNOSTIC AND USAGE INFORMATION instead.
In the interest of privacy, I suggest that, before posting, you edit out the “Anonymous UUID,” a long string of letters, numbers, and dashes in the header of the report, if it’s present (it may not be.)
Please don’t post other kinds of diagnostic report—they're very long and rarely helpful. -
Error ORA-29532 service does not contain port
I used utl_dbws in this simple function:
CREATE OR REPLACE FUNCTION get_meteo (p_int_1 IN VARCHAR2,
p_int_2 IN VARCHAR2)
RETURN VARCHAR2
AS
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
l_return NUMBER;
BEGIN
l_wsdl_url := 'http://www.webservicex.net/globalweather.asmx?WSDL';
l_namespace := 'http://www.webserviceX.NET/';
l_service_qname := UTL_DBWS.to_qname(l_namespace, 'GlobalWeather');
l_port_qname := UTL_DBWS.to_qname(l_namespace, 'GlobalWeatherSoap');
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'GetWeather');
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
<ws_add xmlns="' || l_namespace || '">
<CountryName>' || p_int_1 || '</CountryName>
<CityName>' || p_int_2 || '</CityName>
</ws_add>');
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
l_return := l_xmltype_out.extract('//return/text()').GetStringVal();
RETURN l_return;
END;
SELECT get_meteo('Italy', 'Milan') FROM dual;
When I try to execute it, I get the error:
ORA-29532: chiamata Java terminata a causa di un'eccezione Java non ottenuta:
service: {http://www.webserviceX.NET/}GlobalWeather does not contain port:
{{http://www.webserviceX.NET/}GlobalWeather}GlobalWeatherSoap
ORA-06512: a "SYS.UTL_DBWS", line 266
ORA-06512: a "SYS.GET_METEO", line 29
Why? Where is the mistake?
Here is definition of the webservice:
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.webserviceX.NET" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.webserviceX.NET" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET">
- <s:element name="GetWeather">ort
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CityName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetWeatherResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetWeatherResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetCitiesByCountry">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetCitiesByCountryResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetCitiesByCountryResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="string" nillable="true" type="s:string" />
</s:schema>
</wsdl:types>
- <wsdl:message name="GetWeatherSoapIn">
<wsdl:part name="parameters" element="tns:GetWeather" />
</wsdl:message>
- <wsdl:message name="GetWeatherSoapOut">
<wsdl:part name="parameters" element="tns:GetWeatherResponse" />
</wsdl:message>
- <wsdl:message name="GetCitiesByCountrySoapIn">
<wsdl:part name="parameters" element="tns:GetCitiesByCountry" />
</wsdl:message>
- <wsdl:message name="GetCitiesByCountrySoapOut">
<wsdl:part name="parameters" element="tns:GetCitiesByCountryResponse" />
</wsdl:message>
- <wsdl:message name="GetWeatherHttpGetIn">
<wsdl:part name="CityName" type="s:string" />
<wsdl:part name="CountryName" type="s:string" />
</wsdl:message>
- <wsdl:message name="GetWeatherHttpGetOut">
<wsdl:part name="Body" element="tns:string" />
</wsdl:message>
- <wsdl:message name="GetCitiesByCountryHttpGetIn">
<wsdl:part name="CountryName" type="s:string" />
</wsdl:message>
- <wsdl:message name="GetCitiesByCountryHttpGetOut">
<wsdl:part name="Body" element="tns:string" />
</wsdl:message>
- <wsdl:message name="GetWeatherHttpPostIn">
<wsdl:part name="CityName" type="s:string" />
<wsdl:part name="CountryName" type="s:string" />
</wsdl:message>
- <wsdl:message name="GetWeatherHttpPostOut">
<wsdl:part name="Body" element="tns:string" />
</wsdl:message>
- <wsdl:message name="GetCitiesByCountryHttpPostIn">
<wsdl:part name="CountryName" type="s:string" />
</wsdl:message>
- <wsdl:message name="GetCitiesByCountryHttpPostOut">
<wsdl:part name="Body" element="tns:string" />
</wsdl:message>
- <wsdl:portType name="GlobalWeatherSoap">
- <wsdl:operation name="GetWeather">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get weather report for all major cities around the world.</wsdl:documentation>
<wsdl:input message="tns:GetWeatherSoapIn" />
<wsdl:output message="tns:GetWeatherSoapOut" />
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get all major cities by country name(full / part).</wsdl:documentation>
<wsdl:input message="tns:GetCitiesByCountrySoapIn" />
<wsdl:output message="tns:GetCitiesByCountrySoapOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:portType name="GlobalWeatherHttpGet">
- <wsdl:operation name="GetWeather">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get weather report for all major cities around the world.</wsdl:documentation>
<wsdl:input message="tns:GetWeatherHttpGetIn" />
<wsdl:output message="tns:GetWeatherHttpGetOut" />
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get all major cities by country name(full / part).</wsdl:documentation>
<wsdl:input message="tns:GetCitiesByCountryHttpGetIn" />
<wsdl:output message="tns:GetCitiesByCountryHttpGetOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:portType name="GlobalWeatherHttpPost">
- <wsdl:operation name="GetWeather">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get weather report for all major cities around the world.</wsdl:documentation>
<wsdl:input message="tns:GetWeatherHttpPostIn" />
<wsdl:output message="tns:GetWeatherHttpPostOut" />
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get all major cities by country name(full / part).</wsdl:documentation>
<wsdl:input message="tns:GetCitiesByCountryHttpPostIn" />
<wsdl:output message="tns:GetCitiesByCountryHttpPostOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="GlobalWeatherSoap" type="tns:GlobalWeatherSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="GetWeather">
<soap:operation soapAction="http://www.webserviceX.NET/GetWeather" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<soap:operation soapAction="http://www.webserviceX.NET/GetCitiesByCountry" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:binding name="GlobalWeatherSoap12" type="tns:GlobalWeatherSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="GetWeather">
<soap12:operation soapAction="http://www.webserviceX.NET/GetWeather" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<soap12:operation soapAction="http://www.webserviceX.NET/GetCitiesByCountry" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:binding name="GlobalWeatherHttpGet" type="tns:GlobalWeatherHttpGet">
<http:binding verb="GET" />
- <wsdl:operation name="GetWeather">
<http:operation location="/GetWeather" />
- <wsdl:input>
<http:urlEncoded />
</wsdl:input>
- <wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<http:operation location="/GetCitiesByCountry" />
- <wsdl:input>
<http:urlEncoded />
</wsdl:input>
- <wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:binding name="GlobalWeatherHttpPost" type="tns:GlobalWeatherHttpPost">
<http:binding verb="POST" />
- <wsdl:operation name="GetWeather">
<http:operation location="/GetWeather" />
- <wsdl:input>
<mime:content type="application/x-www-form-urlencoded" />
</wsdl:input>
- <wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetCitiesByCountry">
<http:operation location="/GetCitiesByCountry" />
- <wsdl:input>
<mime:content type="application/x-www-form-urlencoded" />
</wsdl:input>
- <wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="GlobalWeather">
- <wsdl:port name="GlobalWeatherSoap" binding="tns:GlobalWeatherSoap">
<soap:address location="http://www.webservicex.com/globalweather.asmx" />
</wsdl:port>
- <wsdl:port name="GlobalWeatherSoap12" binding="tns:GlobalWeatherSoap12">
<soap12:address location="http://www.webservicex.com/globalweather.asmx" />
</wsdl:port>
- <wsdl:port name="GlobalWeatherHttpGet" binding="tns:GlobalWeatherHttpGet">
<http:address location="http://www.webservicex.com/globalweather.asmx" />
</wsdl:port>
- <wsdl:port name="GlobalWeatherHttpPost" binding="tns:GlobalWeatherHttpPost">
<http:address location="http://www.webservicex.com/globalweather.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>l_namespace := 'http://www.webserviceX.NET/';
According to the WSDL, the target namespace is :
http://www.webserviceX.NET(no ending slash)
See if it makes a difference.
I don't have UTL_DBWS installed to test, but the webservice works well when invoked via UTL_HTTP :
SQL> DECLARE
2 req_text VARCHAR2(4000) :=
3 '<?xml version="1.0" encoding="utf-8"?>
4 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
5 <soap:Body>
6 <GetWeather xmlns="http://www.webserviceX.NET">
7 <CityName>Nantes</CityName>
8 <CountryName>France</CountryName>
9 </GetWeather>
10 </soap:Body>
11 </soap:Envelope>';
12
13 req utl_http.req;
14 res utl_http.resp;
15 res_text VARCHAR2(32767);
16
17 BEGIN
18
19 req := utl_http.begin_request('www.webservicex.net/globalweather.asmx', 'POST', 'HTTP/1.1');
20 utl_http.set_header(req, 'Content-Type', 'text/xml');
21 utl_http.set_header(req, 'Content-Length', length(req_text));
22 utl_http.set_header(req, 'SOAPAction', 'http://www.webserviceX.NET/GetWeather');
23
24 utl_http.write_text(req, req_text);
25
26 res := utl_http.get_response(req);
27 utl_http.read_text(res, res_text);
28 utl_http.end_response(res);
29
30 dbms_output.put_line(res_text);
31
32 END;
33 /
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetWeatherResponse xmlns="http://www.webserviceX.NET"><GetWeatherResult><?xml version="1.0" encoding="utf-16"?>
<CurrentWeather>
<Location>Nantes, France (LFRS) 47-10N 001-36W 27M</Location>
<Time>Feb 12, 2012 - 06:30 AM EST / 2012.02.12 1130 UTC</Time>
<Wind> from the ENE (060 degrees) at 9 MPH (8 KT):0</Wind>
<Visibility> greater than 7 mile(s):0</Visibility>
<Temperature> 32 F (0 C)</Temperature>
<Wind>Windchill: 24 F (-4 C):1</Wind>
<DewPoint> 8 F (-13 C)</DewPoint>
<RelativeHumidity> 36%</RelativeHumidity>
<Pressure> 30.53 in. Hg (1034 hPa)</Pressure>
<Status>Success</Status>
</CurrentWeather></GetWeatherResult></GetWeatherResponse></soap:Body></soap:Envelope>
PL/SQL procedure successfully completed
Or directly with the HTTP GET protocol :
SQL> select *
2 from xmltable(
3 '/CurrentWeather'
4 passing xmlparse(document
5 xmlcast(
6 xmlquery(
7 'declare default element namespace "http://www.webserviceX.NET"; /string'
8 passing httpuritype('http://www.webservicex.net/globalweather.asmx/GetWeather?CityName=Nantes&CountryName=France').getXML()
9 returning content
10 ) as varchar2(4000)
11 )
12 )
13 columns location varchar2(100) path 'Location'
14 , pressure varchar2(100) path 'Pressure'
15 , temperature varchar2(100) path 'Temperature'
16 );
LOCATION PRESSURE TEMPERATURE
Nantes, France (LFRS) 47-10N 001-36W 27M 30.53 in. Hg (1034 hPa) 32 F (0 C) -
SAP oracle database crash with errore:ORA-00490: PSP process terminated
Hi ALL,
Our oracle database crash with errore code in trace : ORA:00490; i started database again and it working fine; but could not fine reason of down and what is this erroe all about
can some help me
Errors in file /oracle/SRD/saptrace/background/srd_pmon_28096.trc:
ORA-00490: PSP process terminated with error
Tue Nov 25 09:00:57 2008
PMON: terminating instance due to error 490
Instance terminated by PMON, pid = 28096
Thanks,
DineshHi stefen,
please find the trace file as below
/oracle/SRD/saptrace/background/srd_pmon_28096.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning and Data Mining options
ORACLE_HOME = /oracle/SRD/102_64
System name: SunOS
Node name: nzlsfn23
Release: 5.10
Version: Generic_137111-01
Machine: sun4u
Instance name: SRD
Redo thread mounted by this instance: 1
Oracle process number: 2
Unix process pid: 28096, image: oracle@nzlsfn23 (PMON)
2008-11-25 09:00:57.497
SERVICE NAME:(SYS$BACKGROUND) 2008-11-25 09:00:56.210
SESSION ID:(24.1) 2008-11-25 09:00:56.194
Background process PSP0 found dead
Oracle pid = 6
OS pid (from detached process) = 28098
OS pid (from process state) = 28098
dtp = 38000afd8, proc = 497000860
Dump of memory from 0x000000038000AFD8 to 0x000000038000B020
38000AFD0 00000005 00000000 [........]
38000AFE0 00000004 97000860 00000000 00000000 [.......`........]
38000AFF0 00000000 50535030 00020000 00000000 [....PSP0........]
38000B000 00006DC2 00000000 00000000 48E50DA4 [..m.........H...]
38000B010 00000001 000E3273 00040081 00000000 [......2s........]
Dump of memory from 0x0000000497000860 to 0x0000000497001048
497000860 02010000 00000000 00000000 00000000 [................]
497000870 00000000 00000000 00000000 00000000 [................]
497000880 00000004 97042570 00000004 97047810 [......%p......x.]
497000890 00000004 97028E68 00000004 97045BE8 [.......h......[.]
4970008A0 00000000 00000000 00000004 97045C70 [..............\p]
4970008B0 00000004 97045C70 00000004 97047800 [......\p......x.]
4970008C0 01060000 00000000 00000004 97025ED8 [..............^.]
4970008D0 00000004 97028E68 00000006 00000000 [.......h........]
4970008E0 00000000 00000000 00000000 00000000 [................]
4970008F0 00000000 00000000 00000004 97042490 [..............$.]
497000900 00000004 970425A0 00000000 00000000 [......%.........]
497000910 00000000 00000000 00000000 00000000 [................]
Repeat 3 times
497000950 00000003 00000000 00000000 00000000 [................]
Repeat 1 times
497000970 00000000 00000000 00000000 00000000 [................]
497000980 00000004 00000000 00000000 00000000 [................]
497000990 00000003 00000000 00000000 00000000 [................]
Repeat 1 times
4970009B0 00000004 00000000 00000000 00000000 [................]
4970009C0 00000005 00000000 00000000 00000000 [................]
4970009D0 00000003 00000000 00000000 00000000 [................]
4970009E0 00000000 00000000 00000000 00000000 [................]
Repeat 8 times
497000A70 00000000 00000000 00000004 97000A78 [...............x]
497000A80 00000004 97000A78 00000000 00000000 [.......x........]
497000A90 00000000 00000000 00000004 97000A98 [................]
497000AA0 00000004 97000A98 00000000 00000000 [................]
497000AB0 00000000 00000000 00000000 00000000 [................]
Repeat 2 times
497000AE0 00000000 00000000 00000018 00000030 [...............0]
497000AF0 00000001 00000B3D 00000004 970037D0 [.......=......7.]
497000B00 00000004 580096B0 00000001 00000000 [....X...........]
497000B10 00000000 00000000 00000000 00000000 [................]
Repeat 2 times
497000B40 00006DC2 00000000 00000000 00000000 [..m.............]
497000B50 00000000 00000000 00000000 00000000 [................]
Repeat 2 times
497000B80 00000004 97000860 00000000 00000000 [.......`........]
497000B90 00000000 00000000 00000000 00000000 [................]
Repeat 7 times
497000C10 00000004 97000C10 00000004 97000C10 [................]
497000C20 00000000 00000000 00010000 00000000 [................]
497000C30 00000000 00000117 0000000A 00000000 [................]
497000C40 00006DC2 00000000 00000000 48E50DA4 [..m.........H...]
497000C50 00000001 00000000 00000000 00000000 [................]
497000C60 00000000 00000000 00000000 00000000 [................]
Repeat 2 times
497000C90 00000000 00000000 00000003 FFFFFFFF [................]
497000CA0 00000000 00000000 00000000 00000000 [................]
Repeat 13 times
497000D80 73726461 646D0000 00000000 00000000 [srdadm..........]
497000D90 00000000 00000000 00000000 00000000 [................]
497000DA0 00000000 00000006 6E7A6C73 666E3233 [........nzlsfn23]
497000DB0 00000000 00000000 00000000 00000000 [................]
Repeat 2 times
497000DE0 00000000 00000000 00000000 00000008 [................]
497000DF0 554E4B4E 4F574E00 00000000 00000000 [UNKNOWN.........]
497000E00 00000000 00000000 00000000 00000000 [................]
497000E10 00000000 00000008 32383039 38000000 [........28098...]
497000E20 00000000 00000000 00000000 00000000 [................]
497000E30 00000000 00000005 6F726163 6C65406E [........oracle@n]
497000E40 7A6C7366 6E323320 28505350 30290000 [zlsfn23 (PSP0)..]
497000E50 00000000 00000000 00000000 00000000 [................]
497000E60 00000000 00000000 00000000 00000016 [................]
497000E70 00000000 00000002 00000000 00000000 [................]
497000E80 00000000 00000000 00000000 00000000 [................]
Repeat 8 times
497000F10 00000000 00000000 00000000 00020000 [................]
497000F20 00000000 00000000 00000000 00000000 [................]
497000F30 00000000 00000000 00000003 9E1F6748 [..............gH]
497000F40 00000004 97001728 00000004 97000758 [.......(.......X]
497000F50 00000000 00000000 00000003 9E26B5B0 [.............&..]
497000F60 00000000 00000000 00000000 00000000 [................]
Repeat 1 times
497000F80 00000004 97000F80 00000004 97000F80 [................]
497000F90 00000000 00040000 00000000 00000000 [................]
497000FA0 00000000 00031A55 00000000 0004D7DD [.......U........]
497000FB0 00000000 00071A55 00000000 00000000 [.......U........]
497000FC0 00000000 00000000 00000000 00000000 [................]
497000FD0 00000000 00000828 00000000 000000E0 [.......(........]
497000FE0 00000000 00000828 00000000 00000000 [.......(........]
497000FF0 00000000 00000000 00000000 00000000 [................]
Repeat 4 times
497001040 00000002 00000000 [........]
error 490 detected in background process
ORA-00490: PSP process terminated with error -
ORA-06502 PL/SQL: numeric or value error ORA-06512 when calling a procedure
Hi,
I have been using ODP.net for a while now and have been calling lots of procedures without issue, however today I put together one to insert key, value parameters into a simple table and it is failing on me Intermittently with the ORA-06502... I have checked the code and I do not see any problems and am thoroughly frustrated... When I call the procedure directly it all works perfectly so the problem is not in the db!
Please can you help? Code follows:
Table defined as:
CREATE TABLE REPORT_REQUEST_PARAMETERS
( REQUEST_ID NUMBER,
PARAM_NAME VARCHAR2(50 BYTE),
PARAM_VALUE VARCHAR2(255 BYTE)
Stored procedure defined as:
create or replace PROCEDURE SP_WRITE_REQUEST_PARAMS
( in_request_id number, in_param_name char, in_param_value char )
AS
BEGIN
INSERT INTO REPORT_REQUEST_PARAMETERS ( REQUEST_ID, PARAM_NAME, PARAM_VALUE )
VALUES
( in_request_id, in_param_name, in_param_value );
END SP_WRITE_REQUEST_PARAMS;
Finally the ODP.net code which calls this looks like:
using (OracleConnection connection = new OracleConnection(...blah...))
using (OracleCommand command = connection.CreateCommand())
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "SP_WRITE_REQUEST_PARAMS";
OracleParameter p1 = new OracleParameter("in_request_id", OracleDbType.Int32);
OracleParameter p2 = new OracleParameter("in_param_name", OracleDbType.Char);
OracleParameter p3 = new OracleParameter("in_param_value", OracleDbType.Char);
p1.Direction = ParameterDirection.Input;
p1.Value = requestId;
p2.Direction = ParameterDirection.Input;
p2.Size = paramName.Length;
p2.Value = paramName;
p3.Direction = ParameterDirection.Input;
p3.Size = paramValue.Length;
p3.Value = paramValue;
command.Parameters.Add(p1);
command.Parameters.Add(p2);
command.Parameters.Add(p3);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}What version of database? If it's 9206 this is a known database problem, and should be resolved by patching the database to 9208. I don't have the bug number handy though.
Simply because it succeeded in sqlplus doesnt mean it's not a database problem, as the problem was intermittent and succeeded from odp sometimes too.
Thanks
Greg -
Simple geometry gets ORA-29532 error on all SDO_GEOM calls
Hi all,
I have a single point in a table such that the query:
select SDO_GEOM.VALIDATE_GEOMETRY(geomObj, 0.05) from testvalid;
/* Returns */
SDO_GEOM.VALIDATE_GEOMETRY(GEOMOBJ,0.05)
'TRUE'However the query:
select SDO_GEOM.VALIDATE_GEOMETRY_with_context(geomObj, 0.05) from testvalid;Receives the following error:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NumberFormatException: empty String
ORA-06512: at "MDSYS.SDO_3GL", line 658
ORA-06512: at "MDSYS.SDO_GEOM", line 519
ORA-06512: at "MDSYS.SDO_GEOM", line 558
ORA-06512: at line 1The data itself is a single sdo_point:
select GEOMOBJ from testvalid;
/* Returns: */
GEOMOBJ
'(3001, , (174.092329032787, 129.420551704918, -71.2857142857142), , )'I think that the problem is something to do with the precision of the stored X, Y and Z values in the point because if I run the following:
update TESTVALID set GEOMOBJ.sdo_point.x = cast(GEOMOBJ.sdo_point.x as number(8,3));
select SDO_GEOM.VALIDATE_GEOMETRY_with_context(geomObj, 0.05) from testvalid;
/* Returns: */
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(GEOMOBJ,0.05)
'TRUE'Similarly, running a direct comparison from an object made on the fly from the point's text representation works fine:
select SDO_GEOM.VALIDATE_GEOMETRY_with_context("MDSYS"."SDO_GEOMETRY"(3001,NULL, "MDSYS"."SDO_POINT_TYPE"(174.092329032787,129.420551704918,-71.2857142857142),NULL,NULL), 0.005) from dual;
/* Returns */
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT("MDSYS"."SDO_GEOMETRY"(3001,NULL,"MDSYS"."SDO_POINT_TYPE"(174.092329032787,129.420551704918,-71.2857142857142),NULL,NULL),0.005)
'TRUE'Note that I only noticed this problem after upgrading from v11 to v11 R2. Also, the same ORA-29532 error comes up when running any of the SDO_GEOM.[x] function calls such as SDO_GEOM.DISTANCE(). The problem is not limited to SDO_POINT type geometries, yet the problem occurs only on some geometry entries in my database. It is repeatable in that the same geometry will continue to fail and the only solution I've found is to try to round down its precision in x, y, and/or z. I only know how to easily round down the precision for SDO_POINT types, so one of my problems is that I'm left with a whole scattering of other geometries that I can no longer spatially query.
The datas themselves were inserted from MATLAB (which connects using v11 Oracle ODBC Java drivers) which converts my coordinates to java.math.BigDecimal and binds them to an oracle prepared statement.
One possibility that I'm considering is that the insertion is done from various computers, some of which are 64-bit machines. Maybe somehow those machines are pumping in coordinates to a precision too great for oracle geometry?
Any help would be fantastic as I'm pretty lost here.
If the precision is indeed the problem, does anyone know how I can trim off those excess values after the decimal point for all geometry types?
Thanks,
Sven.The problem is with the way the ordiantes are created via java programs pre 11.2.
There was a bit alignment problem in the internal representation of the number when these numbers are created from a java program.
In 11.2 this corruption is fixed, but as a result the data that is already corrupted gives this "empty string" error.
It is very easy to fix. Follow the steps in the script below.
create or replace function id_geom ( g in sdo_geometry)
return sdo_geometry deterministic as
g1 sdo_geometry ;
idx number;
ords sdo_ordinate_array;
x number;
y number;
z number;
point_t sdo_point_type;
begin
if (g.sdo_point is not NULL) then
x := NULL; y := NULL; z := NULL;
if (g.sdo_point.x is not NULL) then
x := g.sdo_point.x * 10;
x := x / 10;
end if;
if (g.sdo_point.y is not NULL) then
y := g.sdo_point.y * 10;
y := y / 10;
end if;
if (g.sdo_point.z is not NULL) then
z := g.sdo_point.z * 10;
z := z / 10;
end if;
point_t := SDO_POINT_TYPE(x,y,z);
else
point_t := NULL;
end if;
if (g.sdo_ordinates is not NULL) then
ords := sdo_ordinate_array();
ords.extend(g.sdo_ordinates.count);
for idx in 1 .. ords.count loop
x := g.sdo_ordinates(idx);
x := (x*10.0);
x := x/10.0;
ords(idx) := x;
end loop;
g1 := sdo_geometry(g.sdo_gtype, g.sdo_srid,point_t,g.sdo_elem_info,ords);
else
g1 := sdo_geometry(g.sdo_gtype, g.sdo_srid,point_t,g.sdo_elem_info, NULL);
end if;
return g1;
end;
And then update the rows with geometry data with SQL like this:
update geom_table set geom = id_geom(geom); -
Utl_dbws web service call ORA-29532
Hello,
I want to call web services from database (version 10.2.0.4.0) using the package utl_dbws and the SOAP message format "document".
The web service is build with the jDeveloper 10.1.3.4 and is deployed on the OC4J server.
With the help of the following example I tried to call my service:
http://steveracanovic.blogspot.com/2008/10/using-utldbws-package-to-call-web.html
A very simple example, with a web service that use the SOAP message format "document".
I get the following error, when I try to call the service from my PLSQL script:
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: Caught exception while handling request: unexpected element name: expected={http://ws/types/}sayHelloWorldElement, actual=sayHelloWorldElement
The OC4J Server shows the same error message too:
ERROR OWS-04045 Fehlerhafte Request-Nachricht: unexpected element name: expected={http://ws/types/}sayHelloWorldElement, actual=sayHelloWorldElement
With an other web service that use the SOAP message format "rpc" I have success.
But with the "rpc" style, I can only get a result with a lengh of 32k.
Can somebody help me?
Thank you in advance.
regards
MichaelHi,
I had same error and then implement your solution. But I get invalid xml error (I have header and body tags)
How can you remove Envelope tag? -
Oracle Database Web Service Client using UTL_DBWS :: ORA-29532 Error
Hi,
I have the Oracle Database 10.2.0.1.0 :-
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - ProductionI have written a simple Web Services Client using the classes gfrom the UTL_DBWS package. I loaded the JAR file dbwsclient.jar in the SYS Schema and I am trying to use it in the USF Schema.
However, I have hit this error & I ma unable to proceed :-
SQL> select get_stock_price from dual;
select get_stock_price from dual
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.IllegalAccessException: javax.xml.rpc.ServiceException:
java.security.AccessControlException: the Permission
(java.lang.RuntimePermission getClassLoader) has not been granted to USF. The
PL/SQL to grant this is dbms_java.grant_permission( 'USF',
'SYS:java.lang.RuntimePermission', 'getClassLoader', '' )
ORA-06512: at "USF.UTL_DBWS", line 193
ORA-06512: at "USF.UTL_DBWS", line 190
ORA-06512: at "USF.GET_STOCK_PRICE", line 17Can you please help me with this ?
Regards,
SandeepHi,
The error message said
the Permission(java.lang.RuntimePermission getClassLoader) has not been granted to USF.
I'd follow the suggestion
The PL/SQL to grant this is dbms_java.grant_permission( 'USF','SYS:java.lang.RuntimePermission', 'getClassLoader', '' )
In case you have not done so, consult the Callout Users Guide @
http://www.oracle.com/technology/sample_code/tech/java/jsp/callout_users_guide.htm
Kuassi http://db360.blogspot.com -
ORA-29532 error when invoking SSL web services using UTL_DBWS
Web Service gurus,
The WSDL for web services is as follows -
<definitions name="Webservice" targetNamespace="http://webservice.airclic.com/">
−
<types>
−
<xs:schema targetNamespace="http://webservice.airclic.com/" version="1.0">
<xs:element name="Exception" type="tns:Exception"/>
<xs:element name="listenForEvents" type="tns:listenForEvents"/>
<xs:element name="listenForEventsResponse" type="tns:listenForEventsResponse"/>
<xs:element name="sendAuthenticationResponse" type="tns:sendAuthenticationResponse"/>
<xs:element name="sendAuthenticationResponseResponse" type="tns:sendAuthenticationResponseResponse"/>
<xs:element name="upsertTask" type="tns:upsertTask"/>
<xs:element name="upsertTaskResponse" type="tns:upsertTaskResponse"/>
−
<xs:complexType name="upsertTask">
−
<xs:sequence>
<xs:element minOccurs="0" name="task" type="tns:Task"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Task">
−
<xs:complexContent>
−
<xs:extension base="tns:PlatformObject">
−
<xs:sequence>
<xs:element minOccurs="0" name="status" type="tns:status"/>
<xs:element minOccurs="0" name="assignee" type="xs:string"/>
<xs:element minOccurs="0" name="assigneeUserId" type="xs:string"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="type" type="xs:string"/>
<xs:element minOccurs="0" name="creationTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="updateTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="startTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="endTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="source" type="tns:source"/>
<xs:element minOccurs="0" name="notes" type="xs:string"/>
<xs:element minOccurs="0" name="priority" type="xs:int"/>
<xs:element minOccurs="0" name="penalized" type="xs:boolean"/>
<xs:element minOccurs="0" name="hasSLA" type="xs:boolean"/>
<xs:element minOccurs="0" name="location" type="tns:Location"/>
<xs:element minOccurs="0" name="windowStartTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="windowEndTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="signee" type="xs:string"/>
<xs:element minOccurs="0" name="signature" type="xs:base64Binary"/>
<xs:element minOccurs="0" name="customerId" type="xs:string"/>
<xs:element minOccurs="0" name="travelTime" type="xs:int"/>
<xs:element minOccurs="0" name="expirationTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="parentId" type="xs:long"/>
<xs:element minOccurs="0" name="externalTimezone" type="xs:string"/>
<xs:element minOccurs="0" name="localTimeOffset" type="xs:long"/>
<xs:element minOccurs="0" name="consignee" type="xs:string"/>
<xs:element minOccurs="0" name="assignmentWindowStartTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="assignmentWindowEndTimestamp" type="xs:long"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="PlatformObject">
−
<xs:sequence>
<xs:element name="id" type="xs:string"/>
<xs:element name="externalId" type="xs:string"/>
<xs:element name="revision" type="xs:long"/>
<xs:element name="platformDateCreated" type="xs:dateTime"/>
<xs:element name="platformDateUpdated" type="xs:dateTime"/>
<xs:element name="objectName" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="extendedAttributes" type="tns:ExtendedAttribute"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Location">
−
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="description" type="xs:string"/>
<xs:element minOccurs="0" name="type" type="xs:string"/>
<xs:element minOccurs="0" name="address" type="tns:Address"/>
<xs:element minOccurs="0" name="position" type="tns:Position"/>
<xs:element minOccurs="0" name="geofenceId" type="xs:long"/>
<xs:element minOccurs="0" name="capcity" type="xs:int"/>
<xs:element minOccurs="0" name="contact" type="xs:string"/>
<xs:element minOccurs="0" name="email" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Address">
−
<xs:sequence>
<xs:element minOccurs="0" name="addressLine" type="xs:string"/>
<xs:element minOccurs="0" name="addressLine2" type="xs:string"/>
<xs:element minOccurs="0" name="city" type="xs:string"/>
<xs:element minOccurs="0" name="secondaryCity" type="xs:string"/>
<xs:element minOccurs="0" name="subdivision" type="xs:string"/>
<xs:element minOccurs="0" name="postalCode" type="xs:string"/>
<xs:element minOccurs="0" name="country" type="xs:string"/>
<xs:element minOccurs="0" name="phone" type="xs:string"/>
<xs:element minOccurs="0" name="freeform" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Position">
−
<xs:sequence>
<xs:element name="latitude" type="xs:double"/>
<xs:element name="longitude" type="xs:double"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="ExtendedAttribute">
−
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="value" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="upsertTaskResponse">
−
<xs:sequence>
<xs:element minOccurs="0" name="task" type="tns:Task"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Exception">
−
<xs:sequence>
<xs:element minOccurs="0" name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="listenForEvents">
−
<xs:sequence>
<xs:element minOccurs="0" name="listenParams" type="tns:ListenParams"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="ListenParams">
−
<xs:sequence>
<xs:element name="queueName" type="xs:string"/>
<xs:element name="resendLast" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="listenForEventsResponse">
−
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="events" type="tns:Event"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Event">
−
<xs:sequence>
<xs:element name="id" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="AuthenticationRequestEvent">
−
<xs:complexContent>
−
<xs:extension base="tns:RequestEvent">
−
<xs:sequence>
<xs:element name="username" type="xs:string"/>
<xs:element minOccurs="0" name="password" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="RequestEvent">
−
<xs:complexContent>
−
<xs:extension base="tns:Event">
−
<xs:sequence>
<xs:element name="correlationId" type="xs:string"/>
<xs:element name="response" type="tns:Response"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="Response">
−
<xs:sequence>
<xs:element name="correlationId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="AuthenticationResponse">
−
<xs:complexContent>
−
<xs:extension base="tns:Response">
−
<xs:sequence>
<xs:element name="success" type="xs:boolean"/>
<xs:element name="username" type="xs:string"/>
<xs:element minOccurs="0" name="password" type="xs:string"/>
<xs:element minOccurs="0" name="firstName" type="xs:string"/>
<xs:element minOccurs="0" name="lastName" type="xs:string"/>
<xs:element minOccurs="0" name="email" type="xs:string"/>
<xs:element minOccurs="0" name="active" type="xs:boolean"/>
<xs:element minOccurs="0" name="timeZone" type="xs:string"/>
<xs:element minOccurs="0" name="group" type="xs:string"/>
<xs:element minOccurs="0" name="role" type="xs:string"/>
<xs:element minOccurs="0" name="errorCode" type="xs:string"/>
<xs:element minOccurs="0" name="errorMessage" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="DispatchEvent">
−
<xs:complexContent>
−
<xs:extension base="tns:Event">
−
<xs:sequence>
<xs:element name="type" type="tns:eventType"/>
<xs:element minOccurs="0" name="previousTask" type="tns:Task"/>
<xs:element name="changeTask" type="tns:Task"/>
<xs:element minOccurs="0" name="newTask" type="tns:Task"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="sendAuthenticationResponse">
−
<xs:sequence>
<xs:element minOccurs="0" name="authenticationResponse" type="tns:AuthenticationResponse"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="sendAuthenticationResponseResponse">
<xs:sequence/>
</xs:complexType>
−
<xs:simpleType name="status">
−
<xs:restriction base="xs:string">
<xs:enumeration value="NULL"/>
<xs:enumeration value="UNASSIGNED"/>
<xs:enumeration value="ASSIGNED"/>
<xs:enumeration value="RECEIVED"/>
<xs:enumeration value="ACCEPTED"/>
<xs:enumeration value="REJECTED"/>
<xs:enumeration value="IN_PROGRESS"/>
<xs:enumeration value="POSTPONED"/>
<xs:enumeration value="COMPLETED"/>
<xs:enumeration value="CANCELED"/>
<xs:enumeration value="CLEARED"/>
<xs:enumeration value="EXPIRED"/>
</xs:restriction>
</xs:simpleType>
−
<xs:simpleType name="source">
−
<xs:restriction base="xs:string">
<xs:enumeration value="NULL"/>
<xs:enumeration value="DISPATCH"/>
<xs:enumeration value="SYSTEM"/>
<xs:enumeration value="ENDUSER"/>
</xs:restriction>
</xs:simpleType>
−
<xs:simpleType name="eventType">
−
<xs:restriction base="xs:string">
<xs:enumeration value="TaskCreated"/>
<xs:enumeration value="TaskUpdated"/>
<xs:enumeration value="TaskAssigned"/>
<xs:enumeration value="TaskDeleted"/>
<xs:enumeration value="TaskStatusChanged"/>
<xs:enumeration value="TaskConflicted"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
</types>
−
<message name="Webservice_listenForEvents">
<part element="tns:listenForEvents" name="listenForEvents"/>
</message>
−
<message name="Webservice_sendAuthenticationResponseResponse">
<part element="tns:sendAuthenticationResponseResponse" name="sendAuthenticationResponseResponse"/>
</message>
−
<message name="Webservice_sendAuthenticationResponse">
<part element="tns:sendAuthenticationResponse" name="sendAuthenticationResponse"/>
</message>
−
<message name="Webservice_upsertTaskResponse">
<part element="tns:upsertTaskResponse" name="upsertTaskResponse"/>
</message>
−
<message name="Exception">
<part element="tns:Exception" name="Exception"/>
</message>
−
<message name="Webservice_upsertTask">
<part element="tns:upsertTask" name="upsertTask"/>
</message>
−
<message name="Webservice_listenForEventsResponse">
<part element="tns:listenForEventsResponse" name="listenForEventsResponse"/>
</message>
−
<portType name="Webservice">
−
<operation name="listenForEvents" parameterOrder="listenForEvents">
<input message="tns:Webservice_listenForEvents"/>
<output message="tns:Webservice_listenForEventsResponse"/>
<fault message="tns:Exception" name="Exception"/>
</operation>
−
<operation name="sendAuthenticationResponse" parameterOrder="sendAuthenticationResponse">
<input message="tns:Webservice_sendAuthenticationResponse"/>
<output message="tns:Webservice_sendAuthenticationResponseResponse"/>
<fault message="tns:Exception" name="Exception"/>
</operation>
−
<operation name="upsertTask" parameterOrder="upsertTask">
<input message="tns:Webservice_upsertTask"/>
<output message="tns:Webservice_upsertTaskResponse"/>
<fault message="tns:Exception" name="Exception"/>
</operation>
</portType>
−
<binding name="WebserviceBinding" type="tns:Webservice">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
−
<operation name="listenForEvents">
<soap:operation soapAction=""/>
−
<input>
<soap:body use="literal"/>
</input>
−
<output>
<soap:body use="literal"/>
</output>
−
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
−
<operation name="sendAuthenticationResponse">
<soap:operation soapAction=""/>
−
<input>
<soap:body use="literal"/>
</input>
−
<output>
<soap:body use="literal"/>
</output>
−
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
−
<operation name="upsertTask">
<soap:operation soapAction=""/>
−
<input>
<soap:body use="literal"/>
</input>
−
<output>
<soap:body use="literal"/>
</output>
−
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
</binding>
−
<service name="Webservice">
−
<port binding="tns:WebserviceBinding" name="WebservicePort">
<soap:address location="https://webservice.mp.b.airclic.com:443/webservice/product/fieldservice/v1/Webservice"/>
</port>
</service>
</definitions>
Following is the pl/sql code using UTL_DBWS
DECLARE
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_input_params UTL_DBWS.anydata_list;
soap_request xmltype;
l_result xmltype;
result_output VARCHAR2(32767);
BEGIN
l_wsdl_url := 'https://webservice.mp.b.airclic.com/webservice/product/fieldservice/v1/Webservice?WSDL';
l_namespace := 'http://webservice.airclic.com/';
dbms_output.put_line ('1');
l_service_qname := UTL_DBWS.to_qname(l_namespace, 'Webservice');
dbms_output.put_line ('2');
l_port_qname := UTL_DBWS.to_qname(l_namespace, 'WebservicePort');
dbms_output.put_line ('3');
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'sendAuthenticationResponse');
dbms_output.put_line ('4');
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
dbms_output.put_line ('5');
l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
dbms_output.put_line ('6');
UTL_DBWS.SET_PROPERTY(l_call,'USERNAME',<username to access wsdl>);
dbms_output.put_line ('7');
UTL_DBWS.SET_PROPERTY(l_call,'PASSWORD',<password>);
dbms_output.put_line ('8');
utl_dbws.set_property(l_call,'OPERATION_STYLE', 'document');
dbms_output.put_line ('9');
soap_request := xmltype.createxml('<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:sendAuthenticationResponse xmlns:ns2="http://webservice.airclic.com/">
<authenticationResponse>
<correlationId>4646735802698040711:[email protected]</correlationId>
<success>true</success>
<username>changlanih</username>
<password>abcd1234</password>
<firstName>hero</firstName>
<lastName>changlani</lastName>
<email>[email protected]</email>
<active>true</active>
<timeZone>eastern</timeZone>
<group>Northeast</group>
<role>Service Manager</role>
</authenticationResponse>
</ns2:sendAuthenticationResponse>
</S:Body>
</S:Envelope>');
l_result := UTL_DBWS.invoke ( l_call,soap_request);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
result_output := l_result.getstringval;
dbms_output.put_line('web svc output ===> ' || result_output);
END;
Following is the error from pl/sql code
1
2
3
4
DECLARE
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.IllegalAccessException: error.build.wsdl.model: oracle.j2ee.ws.common.tools.api.WsdlValidationException:
Failed to read WSDL from https://webservice.mp.b.airclic.com/webservice/product/fieldservice/v1/Webservice?WSDL:
HTTP connection error code is 401
ORA-06512: at "SYS.UTL_DBWS", line 193
ORA-06512: at "SYS.UTL_DBWS", line 190
ORA-06512: at line 20
Notes
The program fails at following line of code -
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
Web services are SSL.
The WSDL is at https location and needs username/password for access. The username/password to access WSDL are set using UTL_DBWS.SET_PROPERTY
To access the SSL site, I have imported the CA in Oracle Wallet, JVM home and JDK home.
Can anyone tell me what am I doing wrong here. I am not able to even establish connection to web service host.
This is very frustrating - Oracle has no examples on how to access a SSL Web Service (that needs authentication) from Database.
This is effecting our project deadlines ......... any help would be greatly appreciated.
Thanks.Hi,
I presume your Web Service needs HTTP (BASIC?) Authentication.
All this needs is setting the following 2 properties, which as can be seen, you are setting....
UTL_DBWS.set_property(l_call, 'USERNAME', '<username>');
UTL_DBWS.set_property(l_call, 'PASSWORD', '<pwd>');
This should work as long as your DBWS Callout Utility was downloaded from OTN after June 2008, and it's version is atleast 10.1.3.1.
Following is a sample code snippet that was tested successfully for this :
Declare
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_result sys.XMLTYPE;
l_request sys.XMLTYPE;
BEGIN
l_service := UTL_DBWS.create_service(null);
l_call := UTL_DBWS.create_call(l_service);
UTL_DBWS.set_target_endpoint_address(l_call, 'http://xxx.oracle.com:8888/basic/MyWebService1SoapHttpPort');
UTL_DBWS.set_property(l_call, 'USERNAME', 'username');
UTL_DBWS.set_property(l_call, 'PASSWORD', 'pwd');
UTL_DBWS.set_property(l_call, 'OPERATION_STYLE', 'document');
UTL_DBWS.set_property(l_call, 'SOAPACTION_USE', 'true');
UTL_DBWS.set_property(l_call, 'SOAPACTION_URI', 'http://xxx.oracle.com:8888/basic/MyWebService1SoapHttpPort');
l_request := XMLTYPE('<Z_CENTRICITY_GET_DOCLIST
xmlns:urn="urn:sap-com:document:sap:rfc:functions">' ||
'<I_INCLUDE_OLD_VERSIONS></I_INCLUDE_OLD_VERSIONS>' ||
'<I_INSTITUTION>0001</I_INSTITUTION>' ||
'<I_PATIENT_NR>0000000181</I_PATIENT_NR>' ||
'</Z_CENTRICITY_GET_DOCLIST>');
l_result := UTL_DBWS.invoke(l_call, l_request);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlcode || ' ' || sqlerrm);
END;
Hope this helps,
Yogesh
Maybe you are looking for
-
Hi All, Which is the function module which Extracts the data from the application document ( Sales order or quotes ) and populates to the SAP message type Idoc segments. what are the SAP table involved in doing this mapping. Thanks & Regards. vijay
-
Error on ASA5505: "IKE Receiver: Error reading from socket."
Hi, I'm expecting a problem with the network of a customer. He has one ASA5505 connected to 2 RV082 using VPN IPSec (1 top office and 2 remote sites). Each sites have 2 internet ADSL providers: "Provider A" and "Provider B" for backup purpose. The re
-
Can't Install R7 of iTunes because QuickTime can't open the registry key
When I try to update iTunes to R7 I get the message "Cannot open key: HKEYLOCALMACHINE\Software\Classes\QuickTime.QuickTime\CLSID Verify sufficient access or contact your support personnel" I've tried deleting QuickTime and the key but nothing has wo
-
LSO offline player configuration
hi team, Could someone shed some light on LSO offline player post installation configuration. The standard installation guide doesn't talk anything about the offline player configuration. As per my knowledge, the offline player installed on the local
-
FaceTime camera appears off-center
I noticed today that on my iPhone 6 the FaceTime camera on the front appears way off-center. I've attached a photo, but it's a little hard to see. It doesn't seem to interfere with the camera, but I don't really know that without a comparison and I h