HI all,
I am using oracle 9i at client side and oracle10g at server side on Microsoft platform. I have written two java class files on threading in which my thread class executes one stored procedure.
I have tested this program from console and its is running well.
I have loaded this Java class file into oracle by using loadjava utility with the valid status.
Now whenever i am trying to execute this Java files i am getting error which is related to some Java security policy.
This is what i have done
CREATE OR REPLACE FUNCTION RunThread RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'Classname.Methodname() return java.lang.String';
/
Function to execute Java class file.
I have used java jdbc odbc connectivity inside my java thread class
Here it is;
public class ProcessorThread implements Runnable{
public static String checkFlag = "N";
Connection conn;
public ProcessorThread(){
} // Creates a new instance of ProcessorThread
public void run() {
try {
System.out.println("Connec
ting .........");
Class.forName("oracle.jdbc
.driver.Or
acleDriver
"); // Load oracle driver
String url = "jdbc:oracle:thin:@IP:sid"
; // Connection string
conn = DriverManager.getConnectio
n(url,user
id,pwd); // Build connection
System.out.println("Execut
ing procedure ........\n");
CallableStatement cstmt =(CallableStatement)conn.p
repareCall
("{call Sp_Demo}");
cstmt.execute();
this.checkFlag="Y";
Thread.sleep(0);
conn.close();
}catch (SQLException sqle){
System.out.println("Proble
m creating connection: " + sqle);
this.checkFlag="N";
}catch (InterruptedException iex){
iex.printStackTrace(); // Can rollback from here if required, to release resources
this.checkFlag="N";
}catch (ClassNotFoundException cnfe){
System.err.println("Can't find driver: " + cnfe);
this.checkFlag="N";
System.exit(1);
}
}
}
Now while executing above Java class from oracle9i i am getting following error,
java.security.AccessContro
lException
: the Permission (java.net.SocketPermission
ip:port connect,resolve) has not been granted to schema. The PL/SQL
to grant this is dbms_java.grant_permission
( 'schema name',
'SYS:java.net.SocketPermis
sion', 'ipaddress', 'connect,resolve' )
at
java.security.AccessContro
lContext.c
heckPermis
sion(Acces
sControlCo
ntext.java
:280
)
at java.security.AccessContro
ller.check
Permission
(AccessCon
troller.ja
va:429)
at java.lang.SecurityManager.
checkPermi
ssion(Secu
rityManage
r.java:528
)
at
oracle.aurora.rdbms.Securi
tyManagerI
mpl.checkP
ermission(
SecurityMa
nagerImpl.
java
:192)
at java.lang.SecurityManager.
checkConne
ct(Securit
yManager.j
ava:1030)
at java.net.Socket.connect(So
cket.java:
446)
at java.net.Socket.connect(So
cket.java:
402)
at java.net.Socket.<init>(Soc
ket.java:3
09)
at java.net.Socket.<init>(Soc
ket.java:1
24)
at oracle.net.nt.TcpNTAdapter
.connect(U
nknown Source)
at oracle.net.nt.ConnOption.c
onnect(Unk
nown Source)
at oracle.net.nt.ConnStrategy
.execute(U
nknown Source)
at oracle.net.resolver.AddrRe
solution.r
esolveAndE
xecute(Unk
nown Source)
at oracle.net.ns.NSProtocol.e
stablishCo
nnection(U
nknown Source)
at oracle.net.ns.NSProtocol.c
onnect(Unk
nown Source)
at oracle.jdbc.driver.T4CConn
ection.con
nect(T4CCo
nnection.j
ava:1023)
at oracle.jdbc.driver.T4CConn
ection.log
on(T4CConn
ection.jav
a:282)
at oracle.jdbc.driver.Physica
lConnectio
n.<init>(P
hysicalCon
nection.ja
va:444)
at oracle.jdbc.driver.T4CConn
ection.<in
it>(T4CCon
nection.ja
va:165)
at
oracle.jdbc.driver.T4CDriv
erExtensio
n.getConne
ction(T4CD
riverExten
sion.java:
35)
at oracle.jdbc.driver.OracleD
river.conn
ect(Oracle
Driver.jav
a:775)
at java.sql.DriverManager.get
Connection
(DriverMan
ager.java:
573)
at java.sql.DriverManager.get
Connection
(DriverMan
ager.java:
187)
at LMSProcessorThread.run(LMS
ProcessorT
hread.java
:28)
can any body tell me how to resolve this problem ????
Any ideas are highly appreciated.
Start Free Trial