I went back to reproducs this, and the process was
this using 
Windows XP Professional
JBoss jboss-3.2.0_tomcat-4.1.24
Oracle Enterprise Version 9.2.0.1.0

1. LoadJava the entire JBoss Client Jar collection
into  SCOTT.
<project name="OracleLoadJavaExample" default="all"
basedir=".">
        <taskdef name="OracleLoadJava"
classname="org.apache.tools.ant.taskdefs.optional.oraclejava.OracleLoadJava"/>
        </target>
                <target name="all">
                <patternset id="all.jars">
                        <include name="**/*.jar"/>
                </patternset>
                <OracleLoadJava oci="on" user="SCOTT/[EMAIL PROTECTED]"
resolve="on" debug="on" force="no" noverify="on"
verbose="on" noserverside="on" schema="scott"
synonym="on" time="on">
                        <fileset dir="C:/jboss-3.2.0_tomcat-4.1.24/client">
                                <patternset refid="all.jars"/>
                        </fileset>
                </OracleLoadJava>
        </target>
</project>

2. Recompile all the invalid classes. To do this,
generate a script with this SQL logged in as SCOTT:

select 'ALTER JAVA CLASS SCOTT."' || object_name || '"
COMPILE;' from USER_OBJECTS where object_type in
('JAVA CLASS', 'JAVA SOURCE') and status = 'INVALID'

Run the script that is generated.

3. Grant the following rights to SCOTT:

dbms_java.grant_permission( 'SCOTT',
'SYS:java.net.SocketPermission', '<IP ADDRESS>:1024-',
'listen,resolve' ); 
dbms_java.grant_permission( 'SCOTT',
'SYS:java.net.SocketPermission', '<IP ADDRESS>:3495',
'connect,accept,resolve' );
    dbms_java.grant_permission(
'SCOTT','SYS:java.lang.RuntimePermission','org.jboss.security.SecurityAssociation.getPrincipalInfo',
'' );
    dbms_java.grant_permission(
'SCOTT','SYS:java.io.SerializablePermission',
'enableSubstitution', '' );
    dbms_java.grant_permission( 'SCOTT',
'SYS:java.net.SocketPermission','<IP ADDRESS>:8093',
'connect,resolve' );

There may be some extra ones in there. I was also
trying to communicate with some JMS processes, but
generally, Oracle will tell you exactly which
permissions you need in the error message if you fail
to have one.

3. Load EJB. Again, I used the Ant task and loaded the
JAR I deployed to JBoss and a simple test client of a
simple EJB:

EJB: 

import javax.ejb.*;
public class StringLibBean implements SessionBean {
  SessionContext sessionContext;
  public void ejbCreate() throws CreateException {
  }
  public void ejbRemove() {    
  }
  public void ejbActivate() {    
  }
  public void ejbPassivate() {    
  }
  public void setSessionContext(SessionContext
sessionContext) {
    this.sessionContext = sessionContext;
  }
  public String reverse(java.lang.String a) {
    return new StringBuffer(a).reverse().toString();
  }
}


Client Code:

  public static String reverse(String ejbName,  String
message) {
    System.out.println("reverse(" + ejbName + "," +
message + ");");
    try {
      if(ctx==null) {
        ctx = getJBossContext();
        System.out.println("Aha! Connnected To :" +
ctx.getEnvironment().get(ctx.PROVIDER_URL));
      }
      if(home == null) {
        System.out.println("Looking Up:" + ejbName);
        Object obj = ctx.lookup(ejbName);
        System.out.println("Found Object Ref:" + obj);
        home = (StringLibHome)obj;
        System.out.println("Cast to Home");
      }
      remote = home.create();
      String tmp = remote.reverse(message);
      System.out.println("StringLib.reverse Result:" +
tmp);
      return tmp;
    }
    catch (Exception ex) {
      System.err.println("Exception:" + ex);
      ex.printStackTrace();
      return null;
    }
  }
  public static Context getJBossContext() throws
Exception {
    Properties p = new Properties();
    p.put(Context.PROVIDER_URL, "localhost:1099");
   
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
    return new InitialContext(p);
  }


4. Recompiled invalid Java Classes again.

5. Created test SQL Script  (testreverse.sql):

connect scott/[EMAIL PROTECTED]
SET SERVEROUTPUT ON
DECLARE
        AA VARCHAR2(30) := 'NULL';
BEGIN
    dbms_java.set_output(10000);
    AA := REVERSE('StringLib', 'Calling JBoss From
PLSQL');
    dbms_output.put_line('Reversed ='|| AA);

END;
/
exit
/


6. Created test command file (reverse.cmd):

@echo off
cls
sqlplus /NOLOG @testreverse.sql

7. Ran the command file:

C:\test>reverse

SQL*Plus: Release 9.2.0.1.0 - Production on Mon Jun 9
06:07:03 2003

Copyright (c) 1982, 2002, Oracle Corporation.  All
rights reserved.

Connected.
reverse(StringLib,Calling JBoss From PLSQL);
Aha! Connnected To :localhost:1099
Looking Up:StringLib
Found Object Ref:StringLibHome
Cast to Home
StringLib.reverse Result:LQSLP morF ssoBJ gnillaC
Reversed =LQSLP morF ssoBJ gnillaC

PL/SQL procedure successfully completed.

Disconnected from Oracle9i Enterprise Edition Release
9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining
options
JServer Release 9.2.0.1.0 - Production



I found Oracle to be a little unstable when testing
this, but once it is loaded and all the classes are
fully compiled in Oracle, it is pretty snappy.

//Nicholas



--- Guy Rouillier <[EMAIL PROTECTED]> wrote:
> Nicholas and Stephano, I've tried to get this
> working numerous times in 
> the past, but I'm still not there.  You can find my
> previous posts on 
> this by searching the archives.
> 
> Nicholas, I can load the JBoss classes into the
> Oracle JVM using 
> loadjava.  But whenever I try to run the simplest
> EJB invocation, I get 
> all kinds of errors.  Have you successfully invoked
> a method on an EJB 
> running under JBoss from within an Oracle stored
> procedure?  If so, I 
> would very much like details on how you did this. 
> Would make a great 
> HOWTO for this group.  Thanks.
> 
> Nicholas wrote:
> > Stefano;
> > 
> > I have had some luck loading classes using a
> custom
> > Ant task.  It is really just a wrapper for
> LoadJava
> > but easier to use if you are Ant inclined. It
> looks
> > like this:
> >     <patternset id="oracle.load.classes">
> >             <include name="jbossall-client.jar"/>
> >     </patternset>
> >     <target name="LoadJBossToOracle">
> >             <OracleLoadJava oci="on"
> user="SCOTT/[EMAIL PROTECTED]"
> > resolve="on" debug="on" force="on" noverify="on"
> > verbose="on" noserverside="on" schema="scott"
> > synonym="on" time="on">
> >                     <fileset
> dir="C:/jboss-3.2.0_tomcat-4.1.24/client">
> >                             <patternset refid="oracle.load.classes"/>
> >                     </fileset>
> >                     <grant name="scott"/>
> >             </OracleLoadJava>       
> >     </target>
> > 
> > The keys are the following:
> > 
> > 1. Defer resolution until the second pass. (set
> > resolve="on")
> > 2. Recompile all classes when you are done. You
> can
> > generate a script to do this as follows:
> > 
> > select 'ALTER JAVA CLASS <USER NAME>."' ||
> object_name
> > || '" COMPILE;' from ALL_OBJECTS where object_type
> in
> > ('JAVA CLASS', 'JAVA SOURCE') and OWNER = '<USER
> > NAME>'
> > 
> > Run the output as a SQL script. It will take quite
> a
> > long time.......
> > 
> > Anyways, email me off line and I'll send you the
> Ant
> > tasks, examples and doc.
> > 
> > //Nicholas
> > 
> > 
> > --- Stefano Maestri <[EMAIL PROTECTED]>
> > wrote:
> > 
> >>We are trying to write a java Stored procedure for
> >>oracle that call a session 
> >>bean. We are experiencing some troble because when
> >>we set the InitialContext 
> >>we get an error because
> >>org.jnp.interfaces.NamingContextFactory is not 
> >>present in Aurora. We tryied to load it (extracted
> >>from jbossall-client.jar), 
> >>but Oracle failed to resolve that class. We tryied
> >>also to load all 
> >>jbossall-client.jar with a lot of resolving error.
> >>Ideas? Domeone had already did something like
> that.
> >>We are using Jboss-3.2.1 
> >>for the bean (and for the jabossall-client.jar)
> and
> >>Oracle 9.2 on HP-UX for 
> >>the DB.
> >>Thanks a lot for the attention.
> >>
> >>P.S.: We had not also javax.ejb in Aurora, but it
> >>load correctly.
> >>
> >>-- 
> >>--------------- all work and no play makes Jack a
> >>dull boy --------------- 
> >>bye Stefano 
> >>    [EMAIL PROTECTED]
> >>    www.javalinux.it
> >>            MSN messanger: [EMAIL PROTECTED] 
> >>            ICQ uin: 122192578
> >>            Jabber: canezen
> >>    Yahoo MSN: canezen
> >>            #jedit IRC channel as <maeste> 
> >>
> >>
> >>
> > 
> >
>
-------------------------------------------------------
> > 
> >>This SF.net email is sponsored by:  Etnus, makers
> of
> >>TotalView, The best
> >>thread debugger on the planet. Designed with
> thread
> >>debugging features
> >>you've never dreamed of, try TotalView 6 free at
> >>www.etnus.com.
> >>_______________________________________________
> >>JBoss-user mailing list
> >>[EMAIL PROTECTED]
> >>
> > 
> >
>
https://lists.sourceforge.net/lists/listinfo/jboss-user
> > 
> > 
> > =====
> > Nicholas Whitehead
> > Home: (973) 377 9335
> > Cell: (201) 615 2716
> > [EMAIL PROTECTED]
> > Get Your News From The Crowbar:
> http://crowbar.dnsalias.com:443/crowbar/
> > 
> > 
> >
>
-------------------------------------------------------
> > This SF.net email is sponsored by:  Etnus, makers
> of TotalView, The best
> > thread debugger on the planet. Designed with
> thread debugging features
> > you've never dreamed of, try TotalView 6 free at
> www.etnus.com.
> > _______________________________________________
> > JBoss-user mailing list
> > [EMAIL PROTECTED]
> >
>
https://lists.sourceforge.net/lists/listinfo/jboss-user
> 
> 
> -- 
> Guy Rouillier
> 
> 
> 
> 
>
-------------------------------------------------------
> This SF.net email is sponsored by:  Etnus, makers of
> TotalView, The best
> thread debugger on the planet. Designed with thread
> debugging features
> you've never dreamed of, try TotalView 6 free at
> www.etnus.com.
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
>
https://lists.sourceforge.net/lists/listinfo/jboss-user


=====
Nicholas Whitehead
Home: (973) 377 9335
Cell: (201) 615 2716
[EMAIL PROTECTED]
Get Your News From The Crowbar: http://crowbar.dnsalias.com:443/crowbar/


-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to