• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Runtime exception java.lang.ClassNotFoundException on executing Stored Proc

 
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am getting the below error when I try to execute a stored proc in Pointbase from weblogic.

java.sql.SQLException: The external "DbLog::insLog" routine had the following runtime exception "java.lang.ClassNotFoundException: DbLog"



Please let me know how to solve this.

 
Marshal
Posts: 28193
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I googled and found a PointBase tutorial. And it said

The tutorial wrote:In order for the database to access this external java method, the class SampleExternalMethods must be included in the database CLASSPATH. For PointBase Server, it must be in the Server CLASSPATH, but not in the Client CLASSPATH.



So presumably your DbLog class isn't in the database's classpath.
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I set the classpath as follows in both the below files,

--commEnv.cmd
set POINTBASE_CLASSPATH=%POINTBASE_HOME%\lib\pbembedded57.jar;%POINTBASE_CLIENT_CLASSPATH%;C:\bea\user_projects\workspaces\WhatsNext\WhatsNextUtility\build\classes\net\verizon\whatsnext\util\common\DbLog.class

--setDomainEnv.cmd
set CLASSPATH=%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POST_CLASSPATH%;%WLP_POST_CLASSPATH%;%WL_HOME%\common\eval\pointbase\lib\pbembedded57.jar;C:\bea\user_projects\workspaces\WhatsNext\WhatsNextUtility\build\classes\net\verizon\whatsnext\util\common\DbLog.class

As you can see, I setted classpath for both pbembedded57.jar as well as my DbLog path.
But still I am getting the below error,

java.sql.SQLException: The external "DbLog::insLog" routine had the following runtime exception "java.lang.ClassNotFoundException: DbLog"

But I can see INSLOG listed under procedures in Pointbase. Please suggest what could be the problem.
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I setted the classpath in commEnv.cmd as follows,
set POINTBASE_HOME=%WL_HOME%\common\eval\pointbase
set POINTBASE_CLIENT_CLASSPATH=%POINTBASE_HOME%\lib\pbclient57.jar
set POINTBASE_CLASSPATH=%POINTBASE_HOME%\lib\pbembedded57.jar;%POINTBASE_CLIENT_CLASSPATH%;C:\bea\user_projects\workspaces\work1\utility\build\classes
set POINTBASE_TOOLS=%POINTBASE_HOME%\lib\pbtools57.jar

My DbLog class in the path, C:\bea\user_projects\workspaces\Work1\util\build\classes\net\local\util\common
FYI, net\local\util\common is the package.

But when I try to execute the page which calls RequestFilter.java, I am getting the following error,

Error 500--Internal Server Error
java.lang.NoClassDefFoundError: Could not initialize class net.local.util.common.DbLog

Please find the code below,

--RequestFilter.java



--DbLog.java
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
any idea please?
 
Paul Clapham
Marshal
Posts: 28193
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator


So your DBLog class is actually in a package. But Pointbase is looking for DBLog, not for net.local.util.common.DbLog. When I looked at the Pointbase tutorial I was really surprised that they seemed to be illustrating the use of a class in the default package, which is a bad practice these days. But perhaps there's some other place where you're supposed to tell Pointbase what package your class is in?
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hmm yeah seems Pointbase is struggling to find DbLog class. Maybe I will try to create another class without package with insLog method and see if any luck?
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

I was not able to create a new class(with insLog method) without package name, since I need to import that class using package name in DbLog class.
So that was not possible.

Strange.. Any other possibilities?
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I read the pointbase documentation at, http://docs.oracle.com/cd/E19518-01/817-7464/817-7464.pdf

And it says,

In order for the database to access this external Java method, the class SampleExternalMethods
must be included in the database CLASSPATH. For PointBase Embedded - Server Option, it
must be in the Server CLASSPATH, but not in the Client CLASSPATH.

The java method can be static or non-static. If it is non-static, connection object will be
established during function invocation, so a non-static member variable of java.sql.connection
and a constructor having parameter java.sql.connection needs to be implemented. If it is static,
the method is called directly and no connection object will be established during function
invocation.

I setted the POINTBASE_CLASSPATH as mentioned in my previous posts but of no use. Did i miss anything?
Should I create a constructor with a connection parameter? But it says, if java method is static, then no connection object will be established during function invocation. Does this mean, no constructor with connection parameter is needed for static java method too?
 
Paul Clapham
Marshal
Posts: 28193
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Apparently you haven't tried the obvious, namely putting the fully qualified class name into your EXTERNAL NAME clause.
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Paul Clapham wrote:Apparently you haven't tried the obvious, namely putting the fully qualified class name into your EXTERNAL NAME clause.



You mean like this?
EXTERNAL NAME \"net.local.util.common.DbLog::insLog\"
I guess I tried like this too.
Or you mean to say something else?
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Paul Clapham wrote:Apparently you haven't tried the obvious, namely putting the fully qualified class name into your EXTERNAL NAME clause.



I tried like this too,

EXTERNAL NAME \"net.local.util.common.DbLog::insLog\"

But still getting,

java.sql.SQLException: The external "net.verizon.whatsnext.util.common.DBLog::insLog" routine had the following runtime exception "java.lang.ClassNotFoundException: net.verizon.whatsnext.util.common.DBLog"
 
Gopikrishna Gopal
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I even tried another new method as follows but that too failed.

I created a jar file DBLog.jar with DBLog class residing in the package (net.local.util.common)

Then added this jar file into the shared library of web project that is calling the method logPreAuth of DBLog class.



Then setted the Pointbase class path in startPointBase.cmd as follows,

@REM Add PointBase classes to the classpath
SET CLASSPATH=C:\bea\user_projects\workspaces\Work1\DBLog.jar;%POINTBASE_CLASSPATH%;%WEBLOGIC_CLASSPATH%

Restarted the admin server and published and, when I hit the page, getting the below error this time,

Error 500--Internal Server Error
java.lang.NoClassDefFoundError: net/local/util/common/DBLog
at net.local.webapp.RequestFilter.doFilter(RequestFilter.java:80)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.bea.portal.tools.servlet.http.HttpContextFilter.doFilter(HttpContextFilter.java:60)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:336)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.bea.jsptools.servlet.PagedResultServiceFilter.doFilter(PagedResultServiceFilter.java:82)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3502)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2186)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2092)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)


Whats wrong?
reply
    Bookmark Topic Watch Topic
  • New Topic