[jboss-user] [Installation, Configuration & DEPLOYMENT] - Re: ERROR [URLDeploymentScanner] JBoss 4.2.2.GA and Netbeans

nknize do-not-reply at jboss.com
Tue Nov 20 18:58:31 EST 2007


Peter,

Thanks so much for the recommendation.  I checked all 3 directories (all, default, and minimal) for the hsqldb-ds.xml file, and it exists in all 3.  Whats more, they're the same.  Below is the contents of that file.


  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <!-- The Hypersonic embedded database JCA connection factory config -->
  | 
  | <!-- $Id: hsqldb-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ -->
  | 
  | <datasources>
  |    <local-tx-datasource>
  | 
  |       <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
  |       <!-- Datasources are not available outside the virtual machine -->
  |       <jndi-name>DefaultDS</jndi-name>
  | 
  |       <!-- For server mode db, allowing other processes to use hsqldb over tcp.
  |       This requires the org.jboss.jdbc.HypersonicDatabase mbean.
  |       <connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url>
  |       -->
  |       <!-- For totally in-memory db, not saved when jboss stops. 
  |       The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown
  |       <connection-url>jdbc:hsqldb:.</connection-url>
  |       -->
  |       <!-- For in-process persistent db, saved when jboss stops.
  |       The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown
  |       -->
  |       <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB</connection-url>
  | 
  |       <!-- The driver class -->
  |       <driver-class>org.hsqldb.jdbcDriver</driver-class>
  | 
  |       <!-- The login and password -->
  |       <user-name>sa</user-name>
  |       <password></password>
  | 
  |       <!--example of how to specify class that determines if exception means connection should be destroyed-->
  |       <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name-->
  | 
  |       <!-- this will be run before a managed connection is removed from the pool for use by a client-->
  |       <!--<check-valid-connection-sql>select * from something</check-valid-connection-sql> -->
  | 
  |       <!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use -->
  |       <min-pool-size>5</min-pool-size>
  | 
  |       <!-- The maximum connections in a pool/sub-pool -->
  |       <max-pool-size>20</max-pool-size>
  | 
  |       <!-- The time before an unused connection is destroyed -->
  |       <!-- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout after last use -->
  |       <!-- TEMPORARY FIX! - Disable idle connection removal, HSQLDB has a problem with not reaping threads on closed connections -->
  |       <idle-timeout-minutes>0</idle-timeout-minutes>
  | 
  |       <!-- sql to call when connection is created
  |         <new-connection-sql>some arbitrary sql</new-connection-sql>
  |       -->
  | 
  |       <!-- sql to call on an existing pooled connection when it is obtained from pool 
  |          <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
  |       -->
  | 
  |       <!-- example of how to specify a class that determines a connection is valid before it is handed out from the pool
  |          <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyValidConnectionChecker</valid-connection-checker-class-name>
  |       -->
  | 
  |       <!-- Whether to check all statements are closed when the connection is returned to the pool,
  |            this is a debugging feature that should be turned off in production -->
  |       <track-statements/>
  | 
  |       <!-- Use the getConnection(user, pw) for logins
  |         <application-managed-security/>
  |       -->
  | 
  |       <!-- Use the security domain defined in conf/login-config.xml -->
  |       <security-domain>HsqlDbRealm</security-domain>
  | 
  |       <!-- Use the security domain defined in conf/login-config.xml or the
  |            getConnection(user, pw) for logins. The security domain takes precedence.
  |         <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
  |       -->
  | 
  |       <!-- HSQL DB benefits from prepared statement caching -->
  |       <prepared-statement-cache-size>32</prepared-statement-cache-size>
  | 
  |       <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
  |       <metadata>
  |          <type-mapping>Hypersonic SQL</type-mapping>
  |       </metadata>
  | 
  |       <!-- When using in-process (standalone) mode -->
  |       <!--depends>jboss:service=Hypersonic,database=localDB</depends-->
  |       <!-- Uncomment when using hsqldb in server mode-->
  |       <depends>jboss:service=Hypersonic</depends>
  |    </local-tx-datasource>
  | 
  |    <!-- Uncomment if you want hsqldb accessed over tcp (server mode)
  |    <mbean code="org.jboss.jdbc.HypersonicDatabase" 
  |      name="jboss:service=Hypersonic">
  |      <attribute name="Port">1701</attribute>
  |      <attribute name="BindAddress">${jboss.bind.address}</attribute>     
  |      <attribute name="Silent">true</attribute>
  |      <attribute name="Database">default</attribute>
  |      <attribute name="Trace">false</attribute>
  |      <attribute name="No_system_exit">true</attribute>
  |    </mbean>
  |    -->
  | 
  |    <!-- For hsqldb accessed from jboss only, in-process (standalone) mode --> 
  |    <mbean code="org.jboss.jdbc.HypersonicDatabase" 
  |      name="jboss:service=Hypersonic,database=localDB">
  |      <attribute name="Database">localDB</attribute>
  |      <attribute name="InProcessMode">true</attribute>
  |    </mbean>
  |    <!--mbean code="org.jboss.jdbc.HypersonicDatabase" 
  |      name="jboss:service=Hypersonic">
  |      <attribute name="Database">localDB</attribute>
  |      <attribute name="InProcessMode">true</attribute>
  |    </mbean-->
  |    
  | </datasources>
  | 

I don't see a JmsXA reference anywhere.  I checked the configuration of this file against the JBoss manual and it doesn't appear that anything is abnormal or out of the ordinary.  Maybe you can see something I can't.

Regarding the JNDI problem, i'm not sure why the KMLEnterpriseApp would not be bound.  Below is the code for the session bean.


  | @Stateless
  | @Local ({GeoEntityFacadeLocal.class})
  | @LocalBinding (jndiBinding="KMLEnterpriseApp-ejb/GeoEntityFacade")
  | public class GeoEntityFacade implements GeoEntityFacadeLocal {
  | 
  |     @PersistenceContext
  |     private EntityManager em;
  |     
  |     /** Creates a new instance of GeoEntityFacade */
  |     public GeoEntityFacade() {
  |     }
  | 
  |     public void create(GeoEntity geoEntity) {
  |         em.persist(geoEntity);
  |     }
  | 
  |     public void edit(GeoEntity geoEntity) {
  |         em.merge(geoEntity);
  |     }
  | 
  |     public void destroy(GeoEntity geoEntity) {
  |         em.merge(geoEntity);
  |         em.remove(geoEntity);
  |     }
  | 
  |     public GeoEntity find(Object pk) {
  |         return (GeoEntity) em.find(GeoEntity.class, pk);
  |     }
  | 
  |     public List findAll() {
  |         return em.createQuery("select object(o) from GeoEntity as o").getResultList();
  |     }
  |     
  | }
  | 

And here is the servlet code that looks up the session bean and throws the exception.


  | public class GPSUpdateLink extends HttpServlet {
  |     //@EJB(name="KMLEnterpriseApp/GeoEntityFacade/local")
  |     private GeoEntityFacade geoEntityFacade;
  |     
  |     /**
  |      * Set the GeoEntityFacde EJB
  |      */
  |     @EJB(name="KMLEnterpriseApp/GeoEntityFacade/local")
  |     void setGeoEntityFacade( GeoEntityFacade gef)
  |     {
  |         geoEntityFacade = gef;
  |     }
  |    
  |     /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
  |      * @param request servlet request
  |      * @param response servlet response
  |      */
  |     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
  |     throws ServletException, IOException {
  |         response.setContentType("text/html;charset=UTF-8");
  |         PrintWriter out = response.getWriter();
  |         out.println("<html>");
  |         out.println("<head>");
  |         out.println("<title>Servlet GPSUpdateLink</title>");
  |         out.println("</head>");
  |         out.println("<body>");
  |         out.println("<h1>Servlet GPSUpdateLink at " + request.getContextPath () + "</h1>");
  |         List geoPoint = lookupGeoEntityFacade().findAll(); // geoEntityFacade.findAll();
  |         for (Iterator it = geoPoint.iterator(); it.hasNext();) {
  |             GeoEntity elem = (GeoEntity) it.next();
  |             out.println(" <b>"+elem.getName()+" </b><br />");
  |             out.println(elem.getData()+"<br /> ");
  |         }
  |         out.println("<a href='PostMessage'>Add new message</a>");
  |         
  |         out.println("</body>");
  |         out.println("</html>");
  |          
  |         out.close();
  |     }
  |     
  |     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
  |     /** Handles the HTTP <code>GET</code> method.
  |      * @param request servlet request
  |      * @param response servlet response
  |      */
  |     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  |     throws ServletException, IOException {
  |         processRequest(request, response);
  |     }
  |     
  |     /** Handles the HTTP <code>POST</code> method.
  |      * @param request servlet request
  |      * @param response servlet response
  |      */
  |     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  |     throws ServletException, IOException {
  |         processRequest(request, response);
  |     }
  |     
  |     /** Returns a short description of the servlet.
  |      */
  |     public String getServletInfo() {
  |         return "Short description";
  |     }
  |     // </editor-fold>
  |     
  |     private GeoEntityFacadeLocal lookupGeoEntityFacade() {
  |         
  |         try {
  |             Context c = new InitialContext();
  |             return (GeoEntityFacadeLocal) c.lookup("java:comp/env/KMLEnterpriseApp/GeoEntityFacade");//java:comp/env/ejb/GeoEntityFacade");
  |         }
  |         catch(NamingException ne) {
  |             Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
  |             throw new RuntimeException(ne);
  |         }
  |     }
  | }
  | 

You can see that I tried the explicit EJB annotation, but that doesn't seem to work.. I end up with a NullPointerException for the geoEntityFacade object.  I tried everything in the JNDI lookup string from "KMLEnterpriseApp/GeoEntityFacade/local" to "java:comp/env/KMLEnterpriseApp/GeoEntityFacade" to "KMLEnterpriseApp/GeoEntityFacade".  Either way, since the name doesn't exist in the lookup tree it won't be able to resolve it no matter what string I use.  Correct?  I should mention that it is a local stateless session bean as indicate explicitly by the @Local and @LocalBinding annotations.

Thanks again for all the help.  At this point any suggestions are greatly appreciated.

- Nick

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4106571#4106571

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4106571



More information about the jboss-user mailing list