LOADJAVA이용시 JAVA CLASS OBJECT의 권한 문제

제품 : SQL*NET
작성날짜 : 2004-01-14
LOADJAVA이용시 JAVA CLASS OBJECT의 권한 문제
====================================
PURPOSE
Java Stored Procedure를 이용하기 위해 java class를 DB로 load할 때 loadjava를
이용할 수 있다. 이때 loadjava 수행시 권한 오류나, java stored procedure(JSP)의
owner와 다른 owner로 java class를 load하고 JSP에서 사용하는 경우의 권한
부여 방법 등을 확인해 본다.
Explanation & Example
1. loadjava와 dropjava의 간단한 실행 방법 및 관계된 objects들
loadjava command는 가장 간단하게 다음과 같이 지정할 수 있다.
-r option은 db에 load하고서 load된 java object를 compile하는 것이다.
os> loadjava -user scott/tiger -r LJTeset.class
이 문장을 수행하고 나면 다음과 같은 object가 생성된다.
즉, load되는 java class외에도 2개의 테이블과 2개의 index, 그리고 한개의
table이 생성된다.
loadjava를 수행하는 user는 이러한 object를 생성할 수 있는 권한이 있어야한다.
SQL> select object_name, object_type from user_objects;
OBJECT_NAME OBJECT_TYPE
CREATE$JAVA$LOB$TABLE TABLE
LJTest JAVA CLASS
JAVA$CLASS$MD5$TABLE TABLE
SYS_C002172 INDEX
SYS_C002173 INDEX
SYS_LOB0000029869C00002$$ LOB
loadjava후, 다시 dropjava문장을 다음과 같이 수행하는 경우, 이렇게 생성된
6개의 object가 모두 사라지는 것이 아니고 LJTest만 지워지고 나머지는
모두 그래도 남는다.
os>dropjava -user scott/tiger LJTest.class
즉, 일단 한번 loadjava를 수행하면 위에서 LJTest를 제외한 나머지 object는
항상 존재하게 된다.
2. loadjava시 다른 user가 java class이용할 수 있도록 하는 방법
loadjava시 load된 java class를 이용하여 JSP를 생성한 owner에게 다음과 같은
방법으로 권한을 부여할 수 있다.
os>loadjava -user scott/tiger -g public -s -r LJTest.class
os>loadjava -user scott/tiger -g eykim -s -r LJTest.class
이때 -g option이 권한을 부여하기 위한 option이며, -s를 지정하면 동일한
이름의 public synonym이 만들어져서 이 java class를 다른 schema에서도
이용가능하게 된다.
(NOTE) 이때, named PL/SQL에서 role을 통해 부여 받은 권한은 인식하지
못하는 제약사항이 loadjava시에도 그대로 적용된다.
즉, -g다음에 role명을 주는 경우 그 role을 가지고 있는 다른 user가
해당 java class를 이용하여 JSP를 만드는 경우 해당 java class를
인식하지 못하게 된다.
loadjava외에 직접적으로 SQL문장을 통해 권한을 부여하여도 된다.
SQL>grant execute on "LJTest" to scott;
여기서 주의할 점은 반드시 LJTest java class를 지정할 때 큰 따옴표(" ")를
표시하여야만 인식이 된다.
이것은 grant뿐 아니고 sql문장에서 java class를 reference할 때 항상 적용된다.
예를 들어 resolve시에 다음과 같이 하여야 한다.
SQL>alter java class "DBTrigger" resolve;
위의 loadjava 문장에서 -s option을 통해 public synonym을 생성하였는데,
이것은 sql문장을 통해 synonym을 생성하여도 같은 결과이다.
이때, user는 create public synonym권한을 가지고 있어야 한다.
이후 dropjava 수행이 필요한 경우, dropjava시 -s option없이 public synonym도
함께 drop되므로 drop public synonym도 필요하다.
Reference Documents
<Note:106753.1> ORA-29521 in Java Stored Procedure referencing Loaded Javax Classes
Java Stored Procedures Developer's Guide Release 2 (8.1.6)", (A81358-01)

Similar Messages

  • How can i have a refrence of a java class object instance in my c++ project

    Hi!
    How can i have a refrence of a java class object instance in my c++ project. Is there a way?

    hahaxia wrote:
    The second question is the big one. The first question is half of the problem of "c++ to java" invocation and access. But the other half which is "java to c++ " invocation and access is still not solved. jni only provide the "java to c++ " DLL invocation Wrong,
    Using JNI your java classes can have methods implemented in C/C++.
    Using JNI you can call java classes.
    There is no other possible interaction between C++ and java, so it does it all.

  • How to return Values from Oracle Object Type to Java Class Object

    Hello,
    i have created an Oracle Object Types in the Database. Then i created Java classes with "jpub" of these types. Here is an example of the type.
    CREATE OR REPLACE TYPE person_type AS OBJECT
    ID NUMBER,
    vorname VARCHAR2(30),
    nachname VARCHAR2(30),
    geburtstag DATE,
    CONSTRUCTOR FUNCTION person_type RETURN SELF AS RESULT,
    CONSTRUCTOR FUNCTION person_type(p_id NUMBER) RETURN SELF AS RESULT,
    CONSTRUCTOR FUNCTION person_type(p_vorname VARCHAR2,
    p_nachname VARCHAR2,
    p_geburtstag DATE) RETURN SELF AS RESULT,
    MEMBER FUNCTION object_exists(p_id NUMBER) RETURN BOOLEAN,
    MEMBER PROCEDURE load_object(p_id NUMBER),
    MEMBER PROCEDURE save_object,
    MEMBER PROCEDURE insert_object,
    MEMBER PROCEDURE update_object,
    MEMBER PROCEDURE delete_object
    MEMBER PROCEDURE load_object(p_id NUMBER) IS
    BEGIN
    SELECT p.id, p.vorname, p.nachname, p.geburtstag
    INTO SELF.ID, SELF.vorname, self.nachname, SELF.geburtstag
    FROM person p
    WHERE p.id = p_id;
    END;
    My problem is, that if i use the member function "load_object" from my java app it doesnt return the selected values to the java class and i dont know why. I use the java class like this:
    PersonObjectType p = new PersonObjectType();
    p.load_object(4);
    There is a reocrd in the database with id = 4 and the function will execute successful. But if i try to use "p.getVorname()" i always get "NULL". Can someone tell me how to do that?
    Thanks a lot.
    Edited by: NTbc on 13.07.2010 15:36
    Edited by: NTbc on 13.07.2010 15:36

    CallableStatement =
    "DECLARE
    a person_type;
    BEGIN
    a.load_object(4);
    ? := a;
    END;"
    And register as an out parameter.
    Edited by: michael76 on 14.07.2010 05:01

  • How do Java Class Objects get invalid?

    How do Java Classes get invalid in the database?

    What version of Oracle?
    Oracle provided or user created?
    Generally speaking if you modify the database objects a class depends on you can invalidate the object which in turn can invalidate dependend code/objects.
    More specifics are needed if you need a better response.
    HTH -- Mark D Powell --

  • How can I either move or view the source of a JAVA CLASS user object?

    I am using Oracle 8i and I have the following JAVA CLASS objects in my database. I need to move some of these objects to a different database.
    1) How can I do this?
    2) How can I view the JAVA source code since these are classes?
    My knowledge of Oracle is limited. I have searched and searched and I can't find the answer. Any help would be greatly appreciated
    SELECT object_name, object_type
    FROM user_objects
    WHERE object_type IN ('JAVA SOURCE', 'JAVA CLASS', 'JAVA RESOURCE')
    ORDER BY object_type, object_name;
    OBJECT_NAME OBJECT_TYPE
    /d082321a_DpsJarStaticFilename JAVA CLASS
    DirHelperStatic JAVA CLASS
    DirHelperStatic$1 JAVA CLASS
    DpsJar JAVA CLASS
    DpsJarException JAVA CLASS
    DpsJarStatic JAVA CLASS
    FilenameFilterImpl JAVA CLASS
    FtpClient JAVA CLASS
    FtpClient$InputStreamProxy JAVA CLASS
    FtpClient$OutputStreamProxy JAVA CLASS
    FtpClientStatic JAVA CLASS
    FtpException JAVA CLASS
    FtpReply JAVA CLASS
    FtpTest JAVA CLASS
    LoadXml JAVA CLASS
    LoadXmlStatic JAVA CLASS
    UrlFileUtils JAVA CLASS
    Utils JAVA CLASS
    dir JAVA CLASS
    Thanks,
    Brian

    The source far java class objects that are not derived from java source objects
    (which is the case here, and is typically the case, such as when one loads
    classes into the database using loadjava on a jar that contains only .class
    files) does not exist in the database (just as it does not exist in a jar which
    contains only .class files). So there is essentially no way to view the source, short of extracting the bytecodes and using some decompiling tool. I don't recall what methodologies exist for extracting bytecodes in 8i. As for transferring
    the classes to another database, the standard Oracle import/export tool can do this.

  • Example of binding an object(just a java class not an EJB) to a JNDI name

    Hi,
    I would appreciate your help if you could give me some pointers regarding where
    to find any examples which uses objects ( a java class not an EJB) to a JNDI name.
    I could get an example to work using String but it doesnt work with a java class
    object.
    Thanks a lot,
    Sunitha

    Try making the java object serializable.
    - Naresh
    "sunitha" <[email protected]> wrote:
    >
    Hi,
    I would appreciate your help if you could give me some pointers regarding
    where
    to find any examples which uses objects ( a java class not an EJB) to
    a JNDI name.
    I could get an example to work using String but it doesnt work with a
    java class
    object.
    Thanks a lot,
    Sunitha

  • How to use JAVA class in C++

    Hi people,
    is there anyone who knows how I can create and use JAVA class in C++ code. Example I have one JAVA class which works with database.
    One of the methods from this class returns XML string that represent result set. How to create instance of this class inside of C++ and have possibility to call this method.

    Hi, I'm also curious how to solve this.
    My problem is that I call a DLL from C++ that returns several values (e.g. function(a, b, c, &w, &x, &y, &z); )
    and I want to create a java class object that can be used to store these values so I can return 1 object
    Below I've written an abstract of the code
    Can someone help me with the parts in <> ??
    Thanks!
    Sander
    JNIEXPORT jobject JNICALL Java_nativeF(...a,b,c...)
       int w,x;
       float y,z;
       C_DLL_Function(a, b, c, &w, &x, &y, &z);
       //<Create Java Class 'Data' jobject>
       //<Call Data.setvalues(w,x,y,z) >
       return jobject;
    ...in java...
    class Data
      private int jw, jx;
      private float jy, jz;
      public function setvalues(int w, int x, float y, float z)
        jw = w;
        etc... 
    [\code]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Drop java class and java source

    Hi,
    When I query user_objects I get some java class and java source objects
    select * from user_objects where object_type like 'JAVA %';
    How do I drop these java source and java class objects from the database
    I tried using the following command
    drop java class /4a524d89_AutoTransliteratorPk
    drop java source AutoTransliteratorPkg
    But I get error ORA-29501: invalid or missing Java source, class, or resource name
    Please someone help me in dropping these objects
    thanks
    saaz

    was the java source all caps or was it exactly AutoTransliteratorPkg. If its exactly AutoTransliteratorPkg then try this
    drop java source "AutoTransliteratorPkg"

  • GME PLLs, forms and java class files???

    Hi,
    if we generate forms of GME from adadmin PLLs will also get generated but how to compile java class files of a product GME ?
    simply we need to create jar files?
    Regards

    Hi,
    if we generate forms of GME from adadmin PLLs will also get generated but how to compile java class files of a product GME ?No.
    simply we need to create jar files?What do you mean by "create jar files"? Do you want to compile java classes? If yes, then the correct syntax is as follows:
    SQL> ALTER JAVA CLASS "Object Name" RESOLVE;Regards,
    Hussein

  • Error: initialization error: file java\lang\Object.class not found

    when the error listed my classpath's its not the same list that is in my Windows XP environment variable list?
    I am on 9.0.3
    I am assuming I have to set some varible to my new jdk\bin directory. I reinstalled it. I have set it to use jdk 1.4 using the ojvm tool a while back.

    Please help!!
    I did change the jdev.conf file setting:
    SetJavaHome /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home
    and I still get this error:
    initiallization erro: file java/lang/Object.class not found in classpath
    I am usgin Oracle JDeveloper 10g 10.1.2 on a Mac OS X Tiger
    Could someone please help?
    thanks a bunch!!!

  • Problem with return a ColdFusion query object from a Java class

    Hi!
    I need to return a ColdFusion query object from a Java class
    using a JDBC result set ( java.sql.ResultSet);
    I have tried to pass my JDBC result set in to the constructor
    of the coldfusion.sql.QueryTable class with this code:
    ColdFusion code
    <cfset pra = createObject("java","QueryUtil").init()>
    <cfset newQuery = CreateObject("java",
    "coldfusion.sql.QueryTable")>
    <cfset newQuery.init( pra.getColdFusionQuery () ) >
    My java class execute a query to db and return QueryTable
    Java code (QueryUtil.java)
    import coldfusion.sql.QueryTable; // (CFusion.jar for class
    QueryTable)
    import com.allaire.cfx //(cfx.jar for class Query used from
    QueryTable)
    public class QueryUtil
    public static coldfusion.sql.QueryTable
    getColdFusionQuery(java.sql.ResultSet rs)
    return new coldfusion.sql.QueryTable(rs);
    but when i run cfm page and coldfusion server tries to
    execute : "<cfset pra =
    createObject("java","QueryUtil").init()>" this error appears:
    Object Instantiation Exception.
    An exception occurred when instantiating a java object. The
    cause of this exception was that: coldfusion/sql/QueryTable.
    If i try to execute QueryUtil.java with Eclipse all it works.
    Also I have tried to return java.sql.ResultSet directly to
    coldfusion.sql.QueryTable.init () with failure.
    Do you know some other solution?

    ok
    i print all my code
    pratica.java execute a query to db and return a querytable
    java class
    import java.util.*;
    import java.sql.*;
    import coldfusion.sql.*;
    public class Pratica {
    private HashMap my;
    private String URI,LOGIN,PWD,DRIVER;
    private Connection conn=null;
    //funzione init
    //riceve due strutture converite in hashmap
    // globals
    // dbprop
    public Pratica(HashMap globals,HashMap dbprop) {
    my = new HashMap();
    my.put("GLOBALS",globals);
    my.put("DBPROP",dbprop);
    URI = "jdbc:sqlserver://it-bra-s0016;databaseName=nmobl";
    LOGIN = "usr_dev";
    PWD = "developer";
    DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    try{
    // Carico il driver JDBC per la connessione con il database
    MySQL
    Class.forName(DRIVER);
    /* Connessione alla base di dati */
    conn=DriverManager.getConnection(URI,LOGIN,PWD);
    if(conn!=null) System.out.println("Connection Successful!");
    } catch (ClassNotFoundException e) {
    // Could not find the database driver
    System.out.print("\ndriver non trovato "+e.getMessage());
    System.out.flush();
    catch (SQLException e) {
    // Could not connect to the database
    System.out.print("\nConnessione fallita "+e.getMessage());
    System.out.flush();
    //funzione search
    //riceve un hash map con i filtri di ricerca
    public QueryTable search(/*HashMap arg*/) {
    ResultSet rs=null;
    Statement stmt=null;
    QueryTable ret=null;
    String query="SELECT * FROM TAN100pratiche";
    try{
    stmt = conn.createStatement();// Creo lo Statement per
    l'esecuzione della query
    rs=stmt.executeQuery(query);
    // while (rs.next()) {
    // System.out.println(rs.getString("descrizione"));
    catch (Exception e) {
    e.printStackTrace();
    try {
    ret = Pratica.RsToQueryTable(rs);
    } catch (SQLException e) {
    e.printStackTrace();
    this.close();
    return(ret);
    // ret=this.RsToQuery(rs);
    // this.close(); //chiude le connessioni,recordset e
    statament
    //retstruct CF vede HashMap come struct
    //METODO DI TEST
    public HashMap retstruct(){
    return(my);
    //conversione resultset to querytable
    private static QueryTable RsToQueryTable(ResultSet rs)
    throws SQLException{
    return new QueryTable(rs);
    //chiura resultset statament e connessione
    private void close(){
    try{
    conn.close();
    conn=null;
    catch (Exception e) {
    e.printStackTrace();
    coldfusion code
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN">
    <html>
    <head>
    <title>Test JDBC CFML Using CFScript</title>
    </head>
    <body>
    <cftry>
    <cfset glb_map =
    createObject("java","java.util.HashMap")>
    <cfset dbprop_map =
    createObject("java","java.util.HashMap")>
    <cfset glb_map.init(glb)> <!---are passed from
    another page--->
    <cfset dbprop_map.init(glb["DBPROP"])>
    <cfset pra =
    createObject("java","Pratica").init(glb_map,dbprop_map)>
    <cfset ourQuery
    =createObject("java","coldfusion.sql.QueryTable").init(pra.search())>
    <cfcatch>
    <h2>Error - info below</h2>
    <cfdump var="#cfcatch#"><cfabort>
    </cfcatch>
    </cftry>
    <h2>Success - statement dumped below</h2>
    <cfdump var="#ourQuery#">
    </body>
    </html>
    error at line <cfset pra =
    createObject("java","Pratica").init(glb_map,dbprop_map)>
    An exception occurred when instantiating a java object. The
    cause of this exception was that: coldfusion/sql/QueryTable.
    -----------------------------------------------------------------------

  • How to  get the profile object in simple java class  (Property accessor)

    Hi All,
    Please guide me how to get the profile object in simple java class (Property accessor) which is extending the RepositoryPropertyDescriptor.
    I have one requirement where i need the profile object i.e i have store id which is tied to profile .so i need the profile object in the property accessor of the SKU item descriptor property, which is extending RepositoryPropertyDescriptor.
    a.I dont have request object also to do request.resolvename.
    b.It is not a component to create setter and getter.It is simple java class which is extending the RepositoryPropertyDescriptor.
    Advance Thanks.

    Iam afraid you might run into synchronization issues with it. You are trying to get/set value of property of a sku repository item that is shared across various profiles.
    Say one profile A called setPropertyValue("propertyName", value).Now another profile B accesses
    getPropertyValue() {
    super.getPropertyValue() // Chance of getting value set by Profile A.
    // Perform logic
    There is a chance that profile B getting the value set by Profile A and hence inconsistency.
    How about doing this way??
    Create PropertyDescriptor in Profile (i.e user item descriptor), pass the attribute CustomCatalogTools in userProfile.xml to that property.
    <attribute name="catalogTools" value="atg.commerce.catalog.CustomCatalogTools"/>
    getPropertyValue()
    //You have Profile item descriptor and also storeId property value.
    // Use CustomCatalogTools.findSku();
    // Use storeId, profile repository item, sku repository item to perform the logic
    Here user itemdescriptor getPropertyValue/setPropertyValue is always called by same profile and there is consistency.
    -karthik

  • Mapping Value Objects to Java Classes

    Hi All,
    I have one Java Class:
    public class MyBean {
        private ArrayList numbers;
    I have created one mapping value object for the same in Flex:
    package vo
        import mx.collections.ArrayCollection;
        [RemoteClass(alias="com.tcs.example.MyBean")]
        public class MyBean
            public function MyBean()
            public var numbers:ArrayCollection;
    but when I fetch the object using Remote Object, the returned object has "numbers" as null even though I'm returning from Java a filled ArrayList.
    Does any one know Why is it happening and what should I do for this.
    Thanks in advance

    Do you have getNumbers and setNumbers methods on your java bean?
    Try to activate the logs on blazeDS to see what's going on.

  • Container Object in Java Class

    Hello ,
    I have a Mapping program using java class type (Java SAX in this case).  I need to access some Runtime constants and the mapping trace object.
    In message mapping is simple. We can use the container object that is pass to a UDF and the GlobalContainer Object.
    But how can I access the  Runtime constants  and mapping trace without a container object ?.
    Any ideas...?
    Thanks in advance.
    Yuvan D.

    in Your java mapping class
    you should import import com.sap.aii.mapping.api.*;
    public void execute(InputStream input, OutputStream output)
            throws StreamTransformationException {
            AbstractTrace trace = null;
            String RESULT = new String();
            trace =
                (AbstractTrace) param.get(
                    StreamTransformationConstants.MAPPING_TRACE);
    trace.addInfo(doc.toString());
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/frameset.htm

  • Error: invalid file 'java/lang/Object.class' (wrong version: 48, expected 4

    hi all
    ive installed jdk1.4.1 from jdk1.3 .
    When i try to compile a java file i get this error.
    Error: invalid file 'java/lang/Object.class' (wrong version: 48, expected 45)
    anyone has any idea abt this.
    im stuck :( pls help.
    thanks
    Jan

    Did you uninstall 1.3 completely? Completely in the sense both jdk and jre.
    You may get this error if you use javac of one version and the rt.jar of another version.
    Sudha

Maybe you are looking for

  • USB Thumbdrive causes "Mass Storage Device Not Responding"...

    Everytime I connect a thumbdrive to my MBP, I cannot eject it. I always get the "disk in use" message. When I go into Activity Monitor, I see "Mass Storage Device Not Responding" and it's eating up a lot of system resources. After a short period of t

  • Acrobat 9 Pro Extended issues

    7-29-08 Hello, I work in an engineering enviromment doing visualization and animation. I have been an advocate for Acrobat 3D as a better way to communicate with our customers. We have a large contingent of Autodesk Mechanical Desktop and Inventor us

  • My used QS G4 came with 10.1 and now I need some answers...

    I just purchased a uzed QS Power Mac G4 at my local apple dealer in his annual used mac stuff after the boxing day sale. EDITORIAL COMMENT: In selling these used macs the dealer ship staff always behave as if they are selling stuff out of the trunk o

  • How does one pass data between war files

    Hello All, I need to be able to pass values between 2 war files. example: from a JSP file in the 1st war file i get the login information and need to pass the userid and password to another JSP in the 2rd war file. Question: How does one go about doi

  • Goods issue form is not opening

    Hello Experts, With one of my user, Good issue form is not opening. As he has got full Authorizations for Goods Issue, when we click the Goods issue option, something happens but then FORM  does not  appear. Help Required Thanks