Commons jar file

I have an application which under certain conditions sends out some emails to a group of users:-
mailService.sendEmail(email_Add, message);mailService is an instance of MailService which resides in a commons.jar file under the lib folder in JBOSS.
The application code resides in an ear file relay.ear under deploy folder of JBOSS.
The application reads the email address from the database:-
select emailAddress from users where userId='bbbb';Now whats required is to move the code executing this query in the class UsersDao to the utilitJar file as well so that any other application which might want to send email can also grab the emailaddress directly such that the call would now look like:-
mailService.sendEmail(userId, message);So the utility jar would access the database and send out emails.
My understanding is that it would not be possible since the lib folder doesnt have access to the datasources and connection pool under JBOSS.
Please advise if I am wrong?
In case there is another work around for this?
In case I am eight are there any documents/links explaining it so that I could present it to our design team.
Thanks in advance for your help.

LisaM wrote:
gimbal2 wrote:
Why not make the commons lib part of your war or ear? Then it has access to whatever your application has access to.That could have been a good idea but as mentioned in my earlier post whats required is just simply putting it in the lib directory under libs folder and in case I am not wrong I dont think one could access the JNDI datasources and dataaccess from that folder. All I need is a confirmation of this. That one cannot access database from JBOSS/lib folder.Wait, what? Your requirement is to put the library somewhere where you quite specifically don't expect it to work?

Similar Messages

  • Is there SAP Common jar file in SMP SDK 3.0?

    Hi everyone,
    I am developing Agentry app connecting to SAP server. I cannot locate SAP common jar file in SMP SDK 3.0. Please help me out of this issue. Thank you very much.

    unfortunately i dont have setup on my current machine. Lets call Steve Streeter, Bill Froelich for assistance.
    Rgrds,
    JK

  • Common jar files location

    We have several "common" jar files that will be used across several of our existing
    applications. We are currently trying to figure out the 'best' location for these
    files. There is one school which feels that /opt/bea/wlserverX.x/ext is the proper
    location for these files and others say /opt/bea/wlserverX.x/lib, yet a third
    opinion is to put it at the same level as the aformentioned directories.
    Has anyone run into this in the past and what was your solution?
    any help would be greatly appreciated!!
    Sebastian

    Just put it in a commonly shared path of the classpath. For example the /lib folder of the application server in question. You only need admin rights on the appserver in question to be able to place the JARs in there.

  • Common JAR file between EJB and WAR inside an EAR

    Hi,
    I'm trying to deploy an EAR application outside the development environment and I have the following problem.
    My EAR has the following structure :
    application.ear
    |-- ejbs.jar
    |-- web.war
    Inside the WAR, in /WEB-INF/lib/, I have a set of JAR files that are used by the Web app and also, of course, by the EJB.
    During the deployment step, EJB module cannot be deployed because it miss some classes into the classpath.
    I think it is a common problem in J2EE development, so does someone has a solution for this problem ?
    Please note I'm using Macromedia JRun 4 SP1 on Windows XP.
    Regards,
    Damien.

    Ok,
    I have found a solution that seems elegant to me. I'm going to try and explain...
    My appli.jar EJB module and my appli.war Web module are using both two JAR, let's say common.jar and util.jar.
    The way to share those JAR between the two modules is to have the following structure for the EAR :
    appli.ear
      |-- appli.jar
      |-- appli.war
      |-- common.jar
      |-- util.jar
      |-- META-INF
           |-- application.xml
           |-- manifest.mfIn this structure :
    * the common.jar and the util.jar are not part of the WAR (/web-inf/lib)
    * the manifest.mf file has the following content :
    Manifest-Version: 1.0
    Created-By: My Application
    Class-Path: common.jar util.jarPlease note that space is used as separator for the classpath entry to allow independancy from OS.
    And you know what ? It works ! Well, on Macromedia JRun 4.0 SP1 and on Windows XP but I hope it works on other platforms.
    I hope it will help a lot of people because I spent a lot of time before to find a solution !
    Regards,
    Damien.

  • Regarding the creation of common jar file ......!

    Hi All ,
    I need to create a new Jar file which consists of the generic code which we can use for connecting to the database. The class in the jar file should have methods like u201CExecuteSelectu201D. u201CExecuteInsertu201D, u201CExecuteDeleteu201D and u201CExecuteUpdateu201D.  which  should pass the required parameters to these methods so that they can execute the corresponding query. My  UDF should use this class file and call the methods above to run any SQL statements.
    any one having any idea about how to create the above requirements .....?
    Thanks in advance
    Aziz

    Hi,
    >> class in the jar file should have methods like u201CExecuteSelectu201D. u201CExecuteInsertu201D, u201CExecuteDeleteu201D and u201CExecuteUpdate
    For developing your requirement, you can use Eclipse or any other IDE which is supported for writing Java codes. Write the codes of your requirement in IDE and compile it. Make a .jar file of classes. and then create a new Imported archive and upload your .jar file. Then relevent  class has to be declared in the import statement. This way you can use your all classes in UDF.
    Regards
    Aashish Sinha

  • Multiple jar files from different locations

    Hello,
    I am having an applet that access code from two different jar files. Of them one is a common jar file for many applets. So I couldn't place it in the local dir as that of the applet's html. I am not using any web server.
         Just to give you a feel of it :
         <PARAM NAME = archive VALUE = "DVApplet.jar,DVVP.jar" > are the jar files my applet is dependant on. But DVVP.jar has to be accessed from a dir different from local dir.
         Will be glad if someone can throw some light on accessing different jar files from different dirs.
         Thanks for your time.
    Regards,
    Anantha

    [url=
    http://forum.java.sun.com/thread.jsp?forum=421&thread=425724&tstart=0&trange=100
    ]This question is a bit similar
    You can use a class loader to do such things.

  • Jar file dependency

    * I'm using OC4J 9.0.3 production version.
    * I have a question about class visibility.
    * I have the manifest file in my App-ejb.jar point to another jar (common.jar) file.
    * My App-ejb.jar file is packaged along with my App-web.war file into an ear file.
    * The classes in common.jar are not visible to my web layer. Is this a bug?
    ===============================================================================
    My app-package structure:
    App.ear
    _______App-ejb.jar
    _______App-web.war
    _______App-common.jar
    ===============================================================================
    Contents of the manifest file in App-ejb.jar:
    Manifest-Version: 1.0
    Created-By: Auto-gen
    Class-Path: Company-common.jar
    ===============================================================================

    There is a typo in the contents of the manifest file. The entry for "Class-Path:" should read:
    "Class-Path: App-common.jar"

  • I am unable to get common.jar

    I have the following path but my basis consultant is on leave for a week
    common.jar (c:\usr\sap\<version>\JC00\j2ee\cluster\server0\bin\ext\com.sap.portal.common)
    Is there any other path from which I can get the common.jar file.
    May be from the portal is it possible to download this file .
    If yes please specify the path.
    10 to one who sends me the .jar at [email protected]
    Edited by: anzar naik on Jul 15, 2008 1:15 PM

    Hi,
    you will find the same in google. Its not related to sap. Its related to java. Most of the applications servers need this file.
    In MQ Server also you will find this jar.
    Thanks,
    RamuV

  • Make a jar file availlable for all web application at deployement time

    Hi !
    Is there a way to make a jar file availlable to all web application included in a .ear file. I know that i can manually copy the jar under (OC4J_HOME)/j2ee/home/lib , but can i create a package that have those web application ( lets say 4 ) and also the common jar file, deploy the that .ear file and make my jar file automatically availlable for all the deployed web application ? or is there a special command that i can use to copy that jar to the (OC4J_HOME)/j2ee/home/lib while deploying the .ear file ?
    i tried adding a manifest file with the classpath option but this seem to work only with jsp...
    thanx for your audience...

    Open the file %J2EE_HOME%/applcation-deployments/your-app/orion-application.xml. Add a tag like the one below:
    <library path="location_of_my_library.jar" />
    This will make the JAR availible to only your application, and the modules within it, and no others.
    Rob Cole
    Oracle

  • Which jar file should i use ??

    Hi,
    Which jar file should i use to import the following:
    import org.apache.commons.lang.exception.NestableRuntimeExceptionI am getting package does not exist error.
    Please help.
    Thanks !

    one of the apache commons Jar files... make sure they're in your classpath.

  • Pass a object from one jar to another jar file

    I have a common jar file which will communicate to the server for data validation purpose.But after validation it has to invoke different different jar file based on its response from the server.So, I might have a object which has to pass from the common jar file to a specific jar file.So, I like to know what will be the best procedure to achieve it.
    Please help me out.

    arpitak wrote:
    Yes,jar file holds class files.one of class files wants to trigger a method of a class file which resides in different jar file.this is the situation I tried to describe.Let consider there are three jar files like JAR A,JAR B ,JAR C.Here JAR A is a common jar where other two jar could be used as a plug in. So based on the condition any one of them (JARS) will be triggered by the common jar(JAR A).this is the situation.The class file of JAR A will trigger some method or main method of the JAR B/JAR C.So,here how could I pass a object from one jar to another is my main question.
    Is it clear now?
    I need a solution for this very urgently.Are you looking for a plug-in framework? That is, dynamically discovering and loading plugins. I am not experienced in developing or using plugins. However Googling "java plugin" brings up JPF.
    If you just have multiple jars that have different classes, the JVM will load the appropriate classes if it can find the jars through the standard classloader on the classpath or through a customer classloader.

  • Where to put common classes and jar files

    hi,
    i want to put some classes and jar files in a common folder so that it can be accessed by other applications is there any way doing that.In tomcat server they have common and shared directories once any classes are into that folder they are being accessed easily ,but i am having problems with sun one .
    Regards
    Ameem Sami

    Did you find a solution for this? I'm having the same problem.
    Thanks,
    Tony

  • Commons- jar's Compatibility with Java 1.7

    Hi,
    I need to know the compatibility between the following jar files and java 1.7:
    commons-beanUtils 1.8.0
    commons-codec 1.3
    commons-collections 3.1
    commons-digester 1.8.1
    commons-Fileupload 1.1.1
    commonsHttpClient 3.1
    commons-io 1.1
    jcifs 1.2.25
    jdom 1.6.1
    jcsh 1.41
    commons-net 2.0
    commons-validator 1.3.0

    But since they're a pool of ever changing open source devs, better just make assumptions. 100% compatibility unless you can prove otherwise. Which you likely can't.

  • "bc4j.xcfg" file not in classpath  (and not in JAR file)

    Hi, this is a very similar problem to one reported today. I have created a JClient application that connects to a DB and displays some info in a JFrame. Running the application through JDeveloper, all is fine. But, if I create a jar file and run it directly through the jar file, I get this error message:
    C:\Work\Client\View\deploy>java -jar my_client.jar
    oracle.jbo.JboException: JBO-33001: Cannot find the configuration file /combit/common/bc4j.xcfg in the classpath
    at oracle.jbo.client.Configuration.loadFromClassPath(Configuration.java: 344)
    at oracle.jbo.common.ampool.PoolMgr.createPool(PoolMgr.java:331)
    at oracle.jbo.common.ampool.PoolMgr.findPool(PoolMgr.java:532)
    at oracle.jbo.client.Configuration.createRootApplicationModule(Configura tion.java:1320)
    at
    oracle.jbo.client.Configuration.createRootApplicationModule(Configura tion.java:1298)
    at view.Login.jbInit(Login.java:81)
    at view.Login.<init>(Login.java:39)
    at view.MainFrame.<clinit>(MainFrame.java:26)
    at view.Combit.<init>(Combit.java:13)
    at view.Combit.main(Combit.java:50)
    In fact, the bc4j.xcfg file is not inside my JAR file (it belongs to the BC4J project, so when I created the JAR file for my "View" project, it never came into.
    How should I create the JAR file to have this file inside and fix my problem??
    Thanks a lot,
    David

    I'm having a similar problem -- but I am just trying to run the BC4J project -- not a project dependent on the BC4J components... where is the classpath being incorrectly set?
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-33001: Cannot find the configuration file infra\mainmenu\bc4j\common\bc4j.xcfg in the classpath
         void oracle.jbo.JboException.<init>(java.lang.Throwable)
              JboException.java:344
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:481
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.ContextPoolManager.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              ContextPoolManager.java:166
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.uicli.mom.JUMetaObjectManager.createPool(java.lang.String, java.util.Properties)
              JUMetaObjectManager.java:471
         oracle.jbo.common.ampool.SessionCookie oracle.jbo.http.HttpContainer.findSessionCookie(javax.servlet.http.HttpSession, java.lang.String, java.lang.String, java.util.Properties)
              HttpContainer.java:638
         oracle.jbo.common.ampool.SessionCookie oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.getSessionCookie(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, java.lang.String)
         void oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useAll(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.data.jbo.xml.parse.JboParserExtensionImpl$JboPageDescription.renderStarted(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page, oracle.cabo.ui.RenderingContext)
         void oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         void oracle.cabo.servlet.AbstractPageBroker.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         oracle.cabo.servlet.Page oracle.cabo.servlet.PageBrokerHandler.handleRequest(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.servlet.UIXServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              HttpServlet.java:740
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              HttpServlet.java:853
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              ServletRequestDispatcher.java:721
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
              ServletRequestDispatcher.java:306
         boolean com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.ApplicationServerThread, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletRequest, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
              HttpRequestHandler.java:767
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run(java.lang.Thread)
              HttpRequestHandler.java:259
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run()
              HttpRequestHandler.java:106
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:803
         void java.lang.Thread.run()
              Thread.java:484
    ## Detail 0 ##
    oracle.jbo.JboException: JBO-33001: Cannot find the configuration file infra\mainmenu\bc4j\common\bc4j.xcfg in the classpath
         void oracle.jbo.client.Configuration.loadFromClassPath(java.lang.String)
              Configuration.java:314
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.createPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:272
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:457
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.ContextPoolManager.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              ContextPoolManager.java:166
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.uicli.mom.JUMetaObjectManager.createPool(java.lang.String, java.util.Properties)
              JUMetaObjectManager.java:471
         oracle.jbo.common.ampool.SessionCookie oracle.jbo.http.HttpContainer.findSessionCookie(javax.servlet.http.HttpSession, java.lang.String, java.lang.String, java.util.Properties)
              HttpContainer.java:638
         oracle.jbo.common.ampool.SessionCookie oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.getSessionCookie(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, java.lang.String)
         void oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useAll(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.data.jbo.xml.parse.JboParserExtensionImpl$JboPageDescription.renderStarted(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page, oracle.cabo.ui.RenderingContext)
         void oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         void oracle.cabo.servlet.AbstractPageBroker.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         oracle.cabo.servlet.Page oracle.cabo.servlet.PageBrokerHandler.handleRequest(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.servlet.UIXServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              HttpServlet.java:740
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              HttpServlet.java:853
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              ServletRequestDispatcher.java:721
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
              ServletRequestDispatcher.java:306
         boolean com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.ApplicationServerThread, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletRequest, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
              HttpRequestHandler.java:767
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run(java.lang.Thread)
              HttpRequestHandler.java:259
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run()
              HttpRequestHandler.java:106
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:803
         void java.lang.Thread.run()
              Thread.java:484
    ## Detail 0 ##
    oracle.jbo.JboException: JBO-33000: Cannot find the configuration file registerConnectionsFromDocument
         void oracle.jbo.client.Configuration.registerConnectionsFromDocument()
              Configuration.java:871
         void oracle.jbo.client.Configuration.loadFromStream(java.io.InputStream)
              Configuration.java:248
         void oracle.jbo.client.Configuration.loadFromClassPath(java.lang.String)
              Configuration.java:308
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.createPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:272
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:457
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.ContextPoolManager.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              ContextPoolManager.java:166
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.uicli.mom.JUMetaObjectManager.createPool(java.lang.String, java.util.Properties)
              JUMetaObjectManager.java:471
         oracle.jbo.common.ampool.SessionCookie oracle.jbo.http.HttpContainer.findSessionCookie(javax.servlet.http.HttpSession, java.lang.String, java.lang.String, java.util.Properties)
              HttpContainer.java:638
         oracle.jbo.common.ampool.SessionCookie oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.getSessionCookie(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, java.lang.String)
         void oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useAll(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.data.jbo.xml.parse.JboParserExtensionImpl$JboPageDescription.renderStarted(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page, oracle.cabo.ui.RenderingContext)
         void oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         void oracle.cabo.servlet.AbstractPageBroker.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         oracle.cabo.servlet.Page oracle.cabo.servlet.PageBrokerHandler.handleRequest(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.servlet.UIXServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              HttpServlet.java:740
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              HttpServlet.java:853
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              ServletRequestDispatcher.java:721
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
              ServletRequestDispatcher.java:306
         boolean com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.ApplicationServerThread, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletRequest, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
              HttpRequestHandler.java:767
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run(java.lang.Thread)
              HttpRequestHandler.java:259
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run()
              HttpRequestHandler.java:106
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:803
         void java.lang.Thread.run()
              Thread.java:484
    ## Detail 0 ##
    java.lang.NullPointerException
         void oracle.jbo.client.Configuration.registerConnectionsFromDocument()
              Configuration.java:860
         void oracle.jbo.client.Configuration.loadFromStream(java.io.InputStream)
              Configuration.java:248
         void oracle.jbo.client.Configuration.loadFromClassPath(java.lang.String)
              Configuration.java:308
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.createPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:272
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.PoolMgr.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              PoolMgr.java:457
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.common.ampool.ContextPoolManager.findPool(java.lang.String, java.lang.String, java.lang.String, java.util.Properties)
              ContextPoolManager.java:166
         oracle.jbo.common.ampool.ApplicationPool oracle.jbo.uicli.mom.JUMetaObjectManager.createPool(java.lang.String, java.util.Properties)
              JUMetaObjectManager.java:471
         oracle.jbo.common.ampool.SessionCookie oracle.jbo.http.HttpContainer.findSessionCookie(javax.servlet.http.HttpSession, java.lang.String, java.lang.String, java.util.Properties)
              HttpContainer.java:638
         oracle.jbo.common.ampool.SessionCookie oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.getSessionCookie(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, oracle.cabo.data.jbo.def.RootAppModuleDef)
         oracle.jbo.ApplicationModule oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(oracle.cabo.servlet.BajaContext, java.lang.String)
         void oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useAll(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.data.jbo.xml.parse.JboParserExtensionImpl$JboPageDescription.renderStarted(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page, oracle.cabo.ui.RenderingContext)
         void oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         void oracle.cabo.servlet.AbstractPageBroker.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         oracle.cabo.servlet.Page oracle.cabo.servlet.PageBrokerHandler.handleRequest(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.servlet.UIXServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              HttpServlet.java:740
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              HttpServlet.java:853
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              ServletRequestDispatcher.java:721
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
              ServletRequestDispatcher.java:306
         boolean com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.ApplicationServerThread, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletRequest, com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
              HttpRequestHandler.java:767
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run(java.lang.Thread)
              HttpRequestHandler.java:259
         void com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run()
              HttpRequestHandler.java:106
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:803
         void java.lang.Thread.run()
              Thread.java:484

  • Problems with signed JAR files in JWS/JRE6 environment.

    Hello All,
    I'm encountering a problem running our desktop application as a Java Web Start deployment in a JRE 6 environment. There were never any problems when running the same application as a JWS deployment in JRE 1.4, or 5, environments. There are also currently no problems in a JRE 6 environment when running the application as a standard desktop application.
    The problem which I am having has nothing to do with launching the application. But for good measure, I verified the JNLP file with JaNeLA. A couple things we out of order, which I addressed to make JaNeLA happy, but my problem still persists. Here is my JNLP file (anonymized to protect the innocent):
    TS: 2010-10-18 17:04:46
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp codebase="$$codebase" href="$$name">
         <information>
              <title>Acme Desktop</title>
              <vendor>Acme Corporation</vendor>
              <homepage href="http://www.acme.com/"/>
              <description>Acme Client for Acme Server</description>
              <description kind="tooltip">Acme Client for Acme Server</description>
              <icon href="desktop.gif"/>
              <offline-allowed/>
         </information>
         <security>
              <all-permissions/>
         </security>
         <resources>
              <j2se version="1.5+"/>
              <jar href="acmedesktop.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/antlr-2.7.2.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/backport-util-concurrent.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/commons-codec-1.3.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/commons-httpclient.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/commons-logging.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/acmeapi.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/HelpJavaDT.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/HelpJavaDT_es.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/jacorb.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/Multivalent.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/slf4j-api-1.5.6.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/slf4j-jdk14-1.5.6.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/snow.jar" download="lazy" version="8.00.01.00+"/>
              <jar href="lib/AcmeTMClient.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/xercesImpl.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/xml-apis.jar" download="eager" version="8.00.01.00+"/>
              <extension name="installer" href="desktopInstaller.jnlp" />
              <extension name="Java Help" href="help.jnlp"/>
              <property name="java.library.path" value="./lib"/>
              <property name="admin" value="false"/>
              <property name="webstart" value="true"/>          
              <!-- The following two lines are for SSO implementation only
              <property name="urladdress" value="http://localhost:8080/AcmeDesktop/servlet/AcmeServlet"/>
              <property name="cookiespec" value="RFC2109"/>
              -->          
         </resources>
         <resources os="Windows">
              <nativelib href="lib/jniWin32.jar" version="8.00.01.00+"/>
         </resources>
         <application-desc main-class="desktop"/>     
    </jnlp>-----
    When running as a JWS deployment, on JRE 6, the application will be functioning normally for a little while, and then suddenly the following exception is thrown, and the current operation fails because the class in question cannot be accessed:
    java.lang.SecurityException: class "acmeapi.communication.CDocImpl"'s signer information does not match signer information of other classes in the same package
         at java.lang.ClassLoader.checkCerts(ClassLoader.java:807)
         at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
         at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
         at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
         at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:288)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
         at acmeapi.common.CDoc.getAnnotationsInfo(CDoc.java:493)
         at acmedesktop.communication.CCommunicationManager.privateGetAnnotations(CCommunicationManager.java:1976)
         at acmedesktop.communication.CCommunicationManager.getAnnotations(CCommunicationManager.java:1828)
         at acmedesktop.annotations.CViewAnnotations.getAnnotations(CViewAnnotations.java:826)
         at acmedesktop.annotations.CViewAnnotations.createView(CViewAnnotations.java:583)
         at acmedesktop.annotations.CViewAnnotations.setData(CViewAnnotations.java:736)
         at acmedesktop.annotations.CViewAnnotations.init(CViewAnnotations.java:205)
         at acmedesktop.hitspanel.CHitsPanel.viewAnnotations(CHitsPanel.java:281)
         at acmedesktop.hitspanel.CHitsTab$3.mousePressed(CHitsTab.java:316)
         at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
         at java.awt.Component.processMouseEvent(Component.java:6260)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
         at java.awt.Component.processEvent(Component.java:6028)
         at java.awt.Container.processEvent(Container.java:2041)
         at java.awt.Component.dispatchEventImpl(Component.java:4630)
         at java.awt.Container.dispatchEventImpl(Container.java:2099)
         at java.awt.Component.dispatchEvent(Component.java:4460)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
         at java.awt.Container.dispatchEventImpl(Container.java:2085)
         at java.awt.Window.dispatchEventImpl(Window.java:2478)
         at java.awt.Component.dispatchEvent(Component.java:4460)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)-----
    The classes of our desktop product are contained within the 'acmedesktop' and 'acmeapi' packages. It requires access to the hard drive of the workstation, and therefore, all jar files included with the application are signed using the following ANT task when compiled:
    <signjar keystore="resources/codesigning/keystore.pfx" storetype="pkcs12" storepass="myPassword" alias="myAlias">
         <fileset dir="${jws_dist}/app" includes="*.jar"/>
         <fileset dir="${jws_dist}/app/lib" includes="*.jar" excludes="jhall__V${dt_version}.jar"/>
    </signjar>-----
    Therefore, all classes, within all jar files, are signed with the same certificate (with the exception of the JavaHelp libraries, which are already signed by Sun - but the class in question attempting to be loaded here is not contained within the JavaHelp jar file anyway). So, the point being, that the exception message stating that the "signer information of the acmeapi.communication.CDocImpl class doesn't match the signer information of other classes in the same package", is simply not correct. All classes within that jar file were signed using the same certificate.
    I downloaded the JRE 6 source from dev.java.net and picked through this issue with a debugger. The ClassLoader.checkCerts() method compares the certificate used to sign the current class which is attempting to be loaded, with the certificates which signed all other previously loaded classes within the same package. If they don't match, the exception above is thrown. What is causing the issue is when the checkCerts() method attempts to get the certificates which signed the currently loading class, null is returned. And obviously, comparing null, with an array of the certificates which signed the previously loaded classes, isn't going to match; therefore this exception is thrown.
    The checkCerts() method gets the certificates of the currently loading class by calling the java.security.CodeSource.getCertificates() method. Tracing deeper in the debugger, the CodeSource object ultimately gets the certificates from the 'signersRef' member variable of the com.sun.deploy.cache.CachedJarFile class. signerRef is a SoftReference object and can therefore be garbage collected at some point. If it has already been garbage collected, the CachedJarFile class will attempt to retrieve it again from the loaded cache entry by calling com.sun.deploy.cache.MemoryCache.getLoadedResource().
    The MemoryCache class maintains the cache entries to the jar files as MemoryCache.CachedResourceReference objects, which subclass WeakReference, and therefore these objects can be garbage collected as well. If the cache entries have also been garbage collected, this leaves the CachedJarFile class with no ability to repopulate the CachedJarFile.signerRef object. Therefore it is completely out of luck getting the certificates which signed the currently loading class, which ultimately causes the above exception.
    When the com.sun.deploy.cache.Cache class attempts to retrieve a cache entry using its getCacheEntry() method, it will attempt to get the entry from the MemoryCache class, if null is returned, it will recreate the cache entry and add it back to the MemoryCache. In contrast, when the CachedJarFile class attempts to get a cache entry from the MemoryCache class, if null is returned, it just gives up.
    (from com.sun.deploy.cache.CachedJarFile:244)
    private CacheEntry getCacheEntry() {
         /* if it was not created by Cache do not search for entry */
         if (resourceURL == null)
              return null;
         CacheEntry ce = (CacheEntry) MemoryCache.getLoadedResource(resourceURL);
         if (ce == null) {
              //This should not happen because CacheEntry should not get collected
              // before CachedJarFile is collected.
              Trace.println("Missing CacheEntry for " + resourceURL + "\n" + ce,
                   TraceLevel.CACHE);
         return ce;
    When debugging, code execution falls within the code block with the comment stating "This should not happen...", but it is happening in my case.
    On an interesting side note, using the jvisualvm.exe tool included with JDK 6, I was able to tell that it seems as though these objects are collected the first time that the JVM allocates more heap space, and then the issue will occur. If I set the initial heap size very large (using -Xms) this issue won't occur at all. But that is kind of a bad solution which I would rather not do, but it is interesting to note for the sake of troubleshooting this issue. The max heap size (-Xmx) is plenty big enough, so the issue is not that we are running out of memory here.
    Does anyone have any insight as to what could be causing this? I've searched, and found a couple threads with similar problems but with no clear solutions. It is not just one workstation either, it happens everywhere I deploy the app as a Java Web Start application in a JRE 6 environment. I have been using version 1.6.0_18 on XP, but it seems to happen on any update version of 1.6. Is the fact that the CachedJarFile class doesn't attempt to reload the resource when it can't retrieve it from MemoryCache a bug? I've dug as deep as I can on this and I'm at wits end, does anybody have any ideas?
    Thank you
    Jake
    Edited by: jkc532 on Nov 12, 2010 10:35 AM

    jkc532 wrote:
    .. Is the fact that the CachedJarFile class doesn't attempt to reload the resource when it can't retrieve it from MemoryCache a bug? From your comprehensive investigation and report, it seems so to me.
    ..I've dug as deep as I can on this and I'm at wits end, does anybody have any ideas?Just after read the summary I was tired, so I have some understanding of the effort you have already invested in this (the 'wits' you have already spent). I think you should raise a bug report and seek Oracle's response.

Maybe you are looking for