View Java Stored Procedures
Hello,
How can I find the names of Java stored procedures
created in the database and what are the published
stored procedures?
thanks
Ranganath Samudrala
Hi,
There are two meta catalogs "okJavaObj" and "okJavaMember" that can be used to get all sorts of information for Java classes and Java methods. Some SQL commands are as follows:
To see all Java classes stored in the database, type in the following select statement:
select "Schema", "Name" from "okJavaObj" ;
or you may want to create the following view:
drop public synonym all_javaobjects;
create or replace view all_javaobjects( Schema, Name, SuperClass, Type) as
(select "Schema", "Name", "SuperClass", "Type" from "okJavaObj");
grant select on all_javaobjects to public;
create public synonym all_javaobjects for system.all_javaobjects;
commit;
You may want to create the following view to see classnames and methods
drop public synonym all_methods;
create or replace view all_methods
(schema,classname, superclass, declaringclass, method_name, type, argcount, jnisignature) as
select a."Schema", a."Name" as ClassName, a."SuperClass",
b."DeclaringClass" , b."Name" as method_name , b."Type",
b."ArgCount", b."JNISign" as jnisignature
from "okJavaObj" a, "okJavaMember" b
where a.POL_REF = b."DefinedIn";
grant select on all_methods to public;
create public synonym all_methods for system.all_methods;
commit;
Similar Messages
-
DBMS_JOB on Java Stored Procedure problem
Hi all,
(running on Oracle 9i : 9.2.0.7.0 64bit on HP/UX)
I have a Java Stored procedure that reads a table
One of the fields in this table is a CLOB containing some more SQL.
We then executeQuery() that SQL (and e-mail the output).
(Obviously I also have PL/SQL wrapper around it, which we'll call PROCNAME).
For certain pieces of SQL, this second executeQuery() fails throwing ORA-00942, but only when run from a DBMS_JOB(!).
Calling "CALL PROCNAME('argument')" from sqlplus/toad works fine, but setting "PROCNAME('argument')" to run as a DBMS Job fails on some SQL with the above error. (All as the same username).
java.lang.StackTraceElement doesn't seem to exist in Oracle java, so the only error I have to go on is e.getMessage() from SQLExecption which returns:
ORA-00942: table or view does not exist
Any help at this strangeness would be appreciated!
nicHi Cris:
May be is a problem of the effective user which is running the procedure.
Which is the auth_id directive at the PLSQL call spec?
Look at this example procedure UploadNews for example:
http://dbprism.cvs.sourceforge.net/dbprism/cms-2.1/db/cmsPlSqlCode.sql?revision=1.21&view=markup
this procedure calls to the cmsNews.doImport which is implemented as Java Stored Procedure.
Also check if your loadjava operation is not using -definer flag.
Best regards, Marcelo. -
Deploy package with Java Stored Procedure without JDeveloper
I have a set of Java Stored Procedures deployed as a package on a Oracle 8i server. Everything works fine in my development environment, and now I would like to deploy the same package in the customers runtime environment. Both environments are running Oracle 8i rel 2 on NT.
Is there a simple way to use the JDeveloper .prf deployment profile without installing JDeveloper in the customers environment?
If not, can I the get the .jar files and .sql scripts from JDeveloper to create the call specs and package bodys?
I guess JDeveloper must have this information, and my idea was then to write a script using loadjava and SQL*Plus.
Regards,
Tom Bjerreyou would not be able to take just the deployment profile and run it outside JDeveloper.
You would be able to create archive of all java classes in the package using Deployment Wizard in JDeveloper.
Then you can load the jar file using the utilities in 8i.
JDeveloper does generate the SQL for CALL specs etc ., at the deployment time and it is printed in MEssage Viewer along with other information.
Hope that info is useful for you
raghu -
Java Stored Procedures with 9.2.0.5
We are attempting to create Java Stored Procedures and we receive the following errors when attempting to do so, not sure why this is happening
C:\WSADWorkspaces\siscore\siscoreCore\source\com\amfam\siscore\integration\service>loadjava -user sis_user/is3l
l@aw0u -oci8 -resolve MaintainService.class
Error while creating JAVA$CLASS$MD5$TABLE
ORA-01031: insufficient privileges
Error while getting old MD5 of com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
Error while creating CREATE$JAVA$LOB$TABLE
ORA-01031: insufficient privileges
Error while deleting com/amfam/siscore/integration/service/MaintainTigerService from lob table
ORA-00942: table or view does not exist
Error while loading class com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
Error while creating class com/amfam/siscore/integration/service/MaintainTigerService
ORA-29506: invalid query derived from USING clause
Error while deleting MD5 of com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
Error while deleting MD5 of com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
The following operations failed
class com/amfam/siscore/integration/service/MaintainTigerService: creation
exiting : Failures occurred during processing
C:\WSADWorkspaces\siscore\siscoreCore\source\com\amfam\siscore\integration\service>Jay,
You ned to grant user sis_user permission to load java classes into the database. Please refer to the Java Developer's Guide which is part of the Oracle documentation and can be accessed via:
http://tahiti.oracle.com
Good Luck,
Avi. -
Java stored procedures and triggers in lite
Hi
We are using java stored procedures and java triggers in our application for oracle lite database 5.1.
We would like to know whether these procedures and triggers are uploaded or associated with tables or not because triggers are not being fired for the tables.
The question is - how to find the uploaded procedures and triggers in system tables.
We dont find any tables like (all_objects, user_objects) for this in oracle lite system catalogs given in the documentation.
thanks in advance
yugandharI don't have much experience with Lite, but I'm running 9i Personal Edition. Any information about triggers can be found in the "ALL_TRIGGERS" view. You will want to filter out any rows where OWNER = 'SYS' unless you created your triggers as SYS. As for procedures and functions, you can see what you have created in the "ALL_OBJECTS" view where OBJECT_TYPE = 'PROCEDURE' or 'FUNCTION', once again filtering out rows where OWNER = 'SYS'. To see the code of any procedure or function, select substr(text,1,80) from ALL_SOURCE where NAME = 'function name' ORDER BY LINE.
Hope this helps! -
Java Stored Procedures and Sockets
We need to synchronize data real time b/w Oracle and the legacy HP3000 system.
For sending data from Oracle to HP3000 we are thinking of using Sockets.
We dont know whether a socket connection can be established from the Oracle database level or need to be from the OS level(here Linux)
I heard that Java stored procedures(JSP) can establish socket connection.
Can someone provide me pointers regarding
(a) setting up socket connection from the database
(b) possibility of transferring data via sockets and using jdbc, and how to send data efficiently and if it is wise
Thanks,
VinojI don't have much experience with Lite, but I'm running 9i Personal Edition. Any information about triggers can be found in the "ALL_TRIGGERS" view. You will want to filter out any rows where OWNER = 'SYS' unless you created your triggers as SYS. As for procedures and functions, you can see what you have created in the "ALL_OBJECTS" view where OBJECT_TYPE = 'PROCEDURE' or 'FUNCTION', once again filtering out rows where OWNER = 'SYS'. To see the code of any procedure or function, select substr(text,1,80) from ALL_SOURCE where NAME = 'function name' ORDER BY LINE.
Hope this helps! -
Error deploying java stored procedure
Anyway, I've got a really simple java function that takes an XML document in a CLOB as a parameter and simply returns whether or not it's a valid document. Works fine in JDeveloper, but when I try to load it into the database, I get:
Errors in cdh_j_validate:
ORA-29521: referenced name oracle/xml/parser/v2/DOMParser could not be found
The XML Parser is installed on the database and is functioning properly.. I am deploying my Java stored procedure to the same schema that the xml parser was installed into. Any suggestions?
Thanks in advance,
Craig Drabik
nullThis is due to a current restriction in the loadjava utility. The following is the excerpt from the Release notes on the subject:
<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>
Incomplete Deployment to Oracle8i When Using JDBC Thin Driver and Net8 Name-value List (1250825)
In the Connection Manager, it is possible to create a connection to Oracle 8i using the Oracle JDBC Thin driver and Net8 name-value pairs as the connection method. This connection can be viewed in the Database Browser, but deployment will not complete because the loadjava utility requires a database string of the form "@host:port:SID" when using the Oracle JDBC Thin driver.
There are two work-arounds to this problem:
Use the Named Host connection method instead of Net Name-Value Pair when creating this connection type in the Connection Manager.
Use the Oracle JDBC OCI-8 driver instead of the Oracle JDBC Thin driver. To use the Oracle JDBC OCI-8 driver with JDeveloper, please see the section entitled 'Connection Requirements for OCI and Type 2 JDBC Drivers' in the online documentation.
<HR></BLOCKQUOTE>
-- Brian -
Java Print Service API in Java Stored Procedure (Linux)
Hi
We are running an Oracle 10g database on Linux and I am in the proces of developing a java stored procedure which should utilize the Java Print Service API.
I have made a simple stored procedure to list all available printers and the DocFlavors they support (se the code below).
My problem is that no printers are listed. I have made a standalone java app. with the same code and executed it directly on the OS level of the Linux box through the Sun JDK 1.4.2 and here I get two printers.
Is there any specific configuration I need to do to make it work?
I am wondering if I need to grant specific authorisations through dbms_java for it to work...?
Any help is greatlyh appreciated.
************************************** CODE BEGIN *************************************
import javax.print.DocFlavor;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
public class TestPrintService {
public TestPrintService() {
public static void listPrinters() {
// Get all available printers and their supported DocFlavors
PrintService[] pservices =
PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Printer services: " + pservices.length);
for (int i = 0; i < pservices.length; i++) {
PrintService pservice = pservices;
System.err.println("Printer: " + pservice);
DocFlavor[] docFlavors = pservice.getSupportedDocFlavors();
for (int j = 0; j < docFlavors.length; j++) {
DocFlavor docFlavor = docFlavors[j];
System.err.println("DocFlavor " + docFlavor.toString());
System.err.println();
************************************** CODE END *************************************
Cheers,
Jacob VennervaldFound this on Oracle support:
Cannot List Available Printers From The Database Using A Java Stored Procedure [ID 372694.1]
Applies to:
Oracle Server - Enterprise Edition - Version: 10.1.0.4.0
This problem can occur on any platform.
Symptoms
Able to list available printers on a machine when running Java code outside the Database.
When running the same Java code inside the Database as a Java Stored Procedure, no printers are found.
Cause
Due to security restrictions, this is expected results.
The Java Docs state:
"Services which are registered by registerService(PrintService) will not be included in lookup
results if a security manager is installed and its CheckPrintJobAccess() method denies access."
Also from the documentation it states:
"A PrintServiceLookup implementor is recommended to check for the SecurityManager.checkPrintJobAccess() to deny access to untrusted code. Following this recommended policy means that untrusted code may not be able to locate any print services. Downloaded applets are the most common example of untrusted code."
Using the checkPrintJobAccess(); call, it does produce a Security Exception when run inside the Database but not when run outside. The exception can be viewed within the log file found in the UDUMP directory.
Solution
Run the following code to confirm obtaining available __printers can not be done...__
This is the code to create the Java Stored Procedure
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "ListPrinters" AS
import javax.print.*;
public class ListPrinters {
public static String AvailablePrinters(){
String strList;
PrintService[] pservices =PrintServiceLookup.lookupPrintServices(null,null);
if (pservices.length > 0 )
strList = pservices[0].getName();
else
strList = "No printers found";
return strList;
public static String listprinters() throws Exception {
String listofprinters;
try {
SecurityManager sm = System.getSecurityManager();
if (sm != null) sm.checkPrintJobAccess();
catch (SecurityException ex) {
System.err.println("Sorry. Printing is not allowed.");
listofprinters = AvailablePrinters();
return listofprinters;
This is the PL/SQL Wrapper
CREATE OR REPLACE FUNCTION Get_Printer_Test RETURN VARCHAR2 IS
LANGUAGE JAVA
NAME 'ListPrinters.listprinters() return String';
This executes the code
SQL> SELECT Get_Printer_Test FROM DUAL;
GET_PRINTER_TEST
No printers found
This is the output found in the trace file in the UDUMP directory
*** SESSION ID:(144.28) 2006-07-08 09:02:25.518
Sorry. Printing is not allowed. -
Howto get information about Java Stored Procedures programmaticly
Hi all,
using the DatabaseMetaData object it is easily possible to get information about database objects like tables, columns or even plsql stored procedures.
But is there a way to get information about Java Stored Procedures which are published in packages ? Is it possible here to use a DatabaseMetaData object or is there any other solution ?
TIA,
ChrisWhat sort of information do you want to know about the Java stored procedures?
Would the views USER_SOURCE or USER_OBJECTS contain the information you need? -
How to create a java stored procedure
hi @all
i have no expierence with java
my plan
i want to select (create view) data from a table which is located in sql server db
with a java stored procedure.
i won't use the way Generic Connectivity/Transparent Gateways (http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76960/hs_admin.htm).
can anybody help me?Download JDeveloper. Look for examples on http://otn.oracle.com.
-
How to call java stored procedure using RMI?
Is it possible to make a call to java stored procedure using RMI. ?
How can I run the RMI registry on the Oracle Server ?<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Thomas Grounds ([email protected]):
Is it possible to make a call to java stored procedure using RMI. ?
In principle it is possible. See the Java-Doc.s of Oracle 8.1.6.
I have successful granted the java.net.SocketPermissions in my USER_JAVA_POLICY view (see Doc.) Now I was able to use the RMI-Sockets, but following
failure try to connect to RMI-Object via RMIregistry an Oracle Error occurs
ORA-03113: end-of-file on communication channel
and after that my Oracle Connection is closed.
How can I run the RMI registry on the Oracle Server ?<HR></BLOCKQUOTE>
I think you do not need the RMI registry on Oracle Server. It should be possible to start the RMI registry wherever you want in your network and access it via the right registry string.
Ciao
Margit
null -
Calling JPA from a Java Stored Procedure
Is it possible to call JPA from a java stored procedure? If so, does anyone have example? How do you setup the persistence.xml?
How does the peformance compare with straight JDBC in a java stored procedure?
Thanks for any help!
JohnnyHi Johnny:
Basically you can run any JDK 1.5 framework inside your Oracle 11g JVM, I have experience integrating Lucene IR library as a new [Domain Index for Oracle 11g/10g|http://docs.google.com/View?id=ddgw7sjp_54fgj9kg] .
I am not familiar with JPA internals but my advice is howto handle the connection inside the OJVM and the configuration files.
Some time ago I took a look to SpringFramework integration and I found that writing a new ApplicationContext class which handles the loading of beans.xml from XMLDB repository instead a file should be enough to work.
Another important point is the life cycle of the [Oracle internal JVM|http://download.oracle.com/docs/cd/E11882_01/java.112/e10588/chtwo.htm#BABHGJFI]. Unlike an standard JVM the OJVM is created once you first connect from the middle tier at OCI level and remains in execution during the connection pool existence.
I mean, if you connect using a JDBC pool the JVM will remains running across multiple soft open/close connections of your middle tier application. This is good because you can read your persistence.xml file using a Singleton class and this expensive operation will be re-used by multiple open/close operation done from the middle tier.
I suggest you do a simple Proof of Concept with a Hello World application and check if it works.
Remember that any security issues will be notified to the .trc files, security issues are related to the strong security layer configured by default inside the OJVM, for example you can not read any files from the OS file system without an specific grant, you need another grant to access to the class loader and so on, but you can simply grant this specific needs to a database role and then grant this role to the user which connect to the OJVM.
Another important point is related to the [End-of-Call Optimization|http://download.oracle.com/docs/cd/E11882_01/java.112/e10588/chtwo.htm#BABIFAAI] this can be useful if you want to perform some clean up in your Singleton class at the level of per-statement execution.
Best regards, Marcelo -
Broken Java Stored Procedure Demo
The link to download HotelBookingsSample.jar does not work. It is located on http://otn.oracle.com/sample_code/tech/java/jsp/samples/jsptrigger/Readme.html
Do as follows:
Define a JDBC Connection to your DB - use this name only.
Create a Deployment profile (Java Stored Procedure )(with [x]Publish option) to the same connection.
Then in the deployment tab of the Message View (View | Message View), you will see the deployment.
Then you can call your procedures, functions using SQL*Plus by
Expand Connection Folder
Right Click on the JDBC Connection
Select Invoke SQL*Plus...
This will invoke SQL*Plus with the info from this connection.
In SQL*Plus enter various statements to invoke your Java Stored Procedure.
For grins, try:
In JDeveloper, select
File | New ... Class / JavaStoredProcedure
Add the following methods to the bottom:
=============
public static String getJDBTime( ) {
return (new Date()).toString();
private static int nSeq = 0;
public static int getNextSequence( ) {
return nSeq++;
===========
Then Create a deployment profile and deploy it.
Then Invoke SQL*Plus and call it as:
select <PackageName>.FunctionName() from dual;
In my case, my SQL*Plus window looked as:
SQL>
SQL>
SQL> select MYPROJECT5.GETJDBTIME() from dual;
MYPROJECT5.GETJDBTIME()
Wed Dec 20 16:12:16 CST 2000
SQL> select MYPROJECT5.GETJDBTIME() from dual;
MYPROJECT5.GETJDBTIME()
Wed Dec 20 16:12:22 CST 2000
SQL> select MYPROJECT5.GETNEXTSEQUENCE() from dual;
MYPROJECT5.GETNEXTSEQUENCE()
0
SQL> select MYPROJECT5.GETNEXTSEQUENCE() from dual;
MYPROJECT5.GETNEXTSEQUENCE()
1
SQL> select MYPROJECT5.GETNEXTSEQUENCE() from dual;
MYPROJECT5.GETNEXTSEQUENCE()
2
SQL>
I hope this helps,
-John
null -
Error while deploying a Java Stored Procedure using JDeveloper
Hi,
I was going thru the Oracle By Example article: "Developing SQL and PL/SQL with JDeveloper". (http://www.oracle.com/technology/obe/obe9051jdev/ide1012/plsqlobe/obeplsql.htm)
One of the items in this article is - "Creating and Deploying a Java Stored Procedure"
I was able to create a java class, compile it. Created a deployment profile. created a pl/sql wrapper. While trying to deploy the java stored procedure, I am getting the following error:
Invoking loadjava on connection 'hr_conn' with arguments:
-order -resolve -thin
errors : class package1/mypackage/JavaStoredProc
ORA-29521: referenced name java/lang/StringBuilder could not be found
The following operations failed
class package1/mypackage/JavaStoredProc: resolution
oracle.aurora.server.tools.loadjava.ToolsException: Failures occurred during processing
at oracle.aurora.server.tools.loadjava.LoadJava.process(LoadJava.java:863)
at oracle.jdeveloper.deploy.tools.OracleLoadjava.deploy(OracleLoadjava.java:116)
at oracle.jdeveloper.deploy.tools.OracleLoadjava.deploy(OracleLoadjava.java:46)
at oracle.jdevimpl.deploy.OracleDeployer.deploy(OracleDeployer.java:97)
at oracle.jdevimpl.deploy.StoredProcHandler.doDeploy(StoredProcHandler.java:474)
at oracle.jdevimpl.deploy.StoredProcHandler.doDeploy(StoredProcHandler.java:361)
at oracle.jdevimpl.deploy.StoredProcHandler.doDeploy(StoredProcHandler.java:285)
at oracle.jdevimpl.deploy.StoredProcProfileDt$Action$1.run(StoredProcProfileDt.java:383)
#### Deployment incomplete. #### Oct 27, 2005 1:38:56 PM
Appreciate your help on this..I am using Jdeveloper 10.1.3 Early Access Version. JDK comes with it. I also have another JDK on my machine (JDK1.4.2_09)
-
Error while executing java stored procedure from a pl/sql procedure
We have a requirement where we need to execute JAVA code stored in an Oracle database (Java Stored Procedure). This code uses some JAR files which we have already loaded without any errors in the database.
The class file was also loaded in the database without any errors. But when we execute the method of this class (JAVA code), it gives the following error:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.NoClassDefFoundError
Is there any way of debugging the code and getting to know where exactly the problem is? Or, any tool/software available for doing the same.
Any pointers would be of great help!
Thanks in advanceHi Uday,
My guess is that there is a problem with your java stored procedure that is causing the "ExceptionInInitializer" error to be thrown. According to the javadoc:
is thrown to indicate that an exception occurred during
evaluation of a static initializer or
the initializer for a static variable
Since I didn't see any of your code in your post, I can't help you much more, I'm afraid. Perhaps if you would provide some more details, I may be able to help you some more. I think the following details would be helpful:
1. Complete error message and stack trace you are getting.
2. The section of your java code that you think is causing the problem.
3. Oracle database version you are using.
Good Luck,
Avi.
Maybe you are looking for
-
Can I transfer an iTunes movie rental from one computer to another?
A movie I rented on one PC with iTunes Windows won't transfer to my main PC. I'm using the latest version of iTunes and Windows 7. I also have an iPhone 4s with iOS 6. I can't transfer the movie rental there either. (I want the movie on my main P
-
Hello all a newbie here. I am on a clean installed system. what are building blocks ? and how are they different /or applicable to Best practises. Please let me know in a layman language( without sap help links) I would also lke to know what is the p
-
I just bought a MacBook Pro, and need to d/l my photos from my memory card reader. iphoto keeps coming up as the app to use, but the column on the left says "No name, and shows 0 photos on the black screen. How do I view the photos on the reader?
-
Still no Internet and/or File Support in Adobe Encore ?!?
Hi... just wondering if Adobe still hasn´t added Link or File Support. I do help myself with Sonic EDVD - but since it must have its own program to use for their Actions for pointing to files i don´t like the way. I know that other softwares do easil
-
"An error occured during activation. Try again"??
I just found my iTouch after months of looking for it. I have used facetime many times before, and now its telling me that theres an error and to try again, except i've been trying for the past hour. I know this is the right password, otherwise I wou