Abstract
A couple of Java source packages residing in Oracle. Need them transferred and compiled.
Compiling Java source in Oracle
ALTER JAVA SOURCE OWNER
ALTER JAVA CLASS OWNER.JavaClass
After I tried to compile the sources, compile returned success, resolve though returned nothing. This means we have errors or dependencies. My Java source is called "ReceiveMail", name stands for itself..
Debugging Java source compile
Actually its very easy, you will easily find additional filters for your query. All_errors/user_errors/dba_errors tables dont have timestamp, but its not needed, they store recent errors (or warnings in case of Java source):
SELECT * FROM user_errors WHERE name = 'RECEIVEMAIL';
Compiling Java source in Oracle example
There is one more (un)expected twist, normally Oracle creates objects in UPPERCASE, just thats not the case for Java source. Standard is respected. This also led to a stupid one hour delay because I was not able to locate the source which was already compiled and valid.
ALTER JAVA SOURCE RECEIVEMAIL COMPILE;
ALTER JAVA CLASS "ReceiveMail" RESOLVE;
Dont forget the correct "ClassName" in correct case. The resolve command can actually also compile the source I did not performed a full scale analysis on when and how, but two other packages that I had got automatically compiled while I was playing with resolve command.
Use this select to see the state of you Java objects:
SELECT object_name, object_type, status FROM user_objects WHERE object_type like '%JAVA%';
You will see if there are any more filters needed, I only had 8 packages, so it was enough. After a successful compilation objects status changed to valid.
Extra grants
If you got this far and your sources are working, then thats it. I was missing one more extra grant for my schema which is called 'INVOICE', you must have appropriate permissions to run this and choose your own schema instead of 'INVOICE':
BEGIN
dbms_java.grant_permission('INVOICE', 'SYS:java.util.PropertyPermission', '*', 'read,write' );
dbms_java.grant_permission( 'INVOICE', 'SYS:java.net.SocketPermission', 'pop.server.com:*', 'accept, connect, resolve' );
END;
No comments:
Post a Comment