2009-03-11 9 views
5

Ho creato alcune risorse JDBC e risorse personalizzate in GlassFish. Ho chiamato la risorsa JDBC jdbc/mydb e la risorsa personalizzata service/test.Come posso fare in modo che una risorsa personalizzata venga analizzata in glassfish da java: com/env-scheme?

La connessione JDBC viene cercata con la chiamata ic.lookup("java:comp/env/jdbc/mydb"). Può anche essere trovato con ic.lookup("jdbc/mydb"), che ha alcuni svantaggi, vedere la risposta di Robin di seguito.

Ma la mia risorsa personalizzata deve essere cercata con ic.lookup("service/test"). La linea ic.lookup("java:comp/env/service/test") non funziona. È possibile, e se sì: come?

risposta

3

Il prefisso indica l'utilizzo di un riferimento risorsa che è stato definito per l'entità Java EE da cui viene eseguita la ricerca JNDI. Dovresti definire un riferimento di questo tipo anche per la tua risorsa personalizzata e cercarlo nello stesso modo.

Il prefisso non è necessario per la ricerca JDBC, poiché è possibile utilizzare invece il nome jndi completo. Il problema con questo approccio è che se si sposta la risorsa in modo tale che non si trova più nel contesto iniziale locale, non la si troverà senza modificare il nome di ricerca nel codice per includere le informazioni sulla posizione. L'utilizzo di un riferimento protegge il tuo codice da questo, quindi cambierà solo la mappatura nel riferimento.

Alcuni info here sull'utilizzo

+0

OK. Ma cosa devo definire, quindi posso usare anche il prefisso 'java: com: env /' - per le risorse personalizzate? Non ho fatto qualcosa di speciale per il JDBC, quindi GlassFish/NetBeans deve provvedere a questo. Ho solo aggiunto risorse nel mio web.config e riferimento risorsa in sun-web.xml. – doekman

+0

Siamo spiacenti, le tue informazioni rimandano a informazioni IBM che non sono indipendenti dal venditore ... – doekman

+0

No, non lo è, ma i principi per come è usato sono. Gli esempi di configurazione sono specifici per IBM e i protocolli specifici utilizzati trovano le risorse. Non sei sicuro che questo possa essere neutrale rispetto al venditore, dovresti determinare come farlo con il tuo server di applicazioni preferito. – Robin

0

io non sono sicuro di cosa significa Glassfish da 'risorsa personalizzata'. Le specifiche Java EE dicono che lo spazio dei nomi 'java: comp/env' è riservato per le ricerche di risorse che sono associate solo a quella particolare applicazione. Così

ic.lookup("java:comp/env/jdbc/mydb") 

significa in realtà che JDBC/miodb è un nome vincolante per l'applicazione (EJB/servlet, ecc) che si sta facendo la ricerca da. Effettuare una ricerca diretta senza usare il prefisso java: comp/env lega l'applicazione all'ambiente server su cui si sta distribuendo.

1

Se hai creato il tuo personalizzati-risorse nella vostra domain.xml, forse ti sei dimenticato di aggiungerli come risorsa-ref sotto il tag server/server della domain.xml:

<resources> 
     <!-- JDBC RESOURCE --> 
     ... 
     <custom-resource res-type="java.lang.String" jndi-name="MyCustomStringResource" 
         factory-class="org.glassfish.resources.custom.factory.PrimitivesAndStringFactory"> 
      <property name="value" value="hello, this is a string resource"></property> 
     </custom-resource> 
     ... 
    </resources> 
    <servers> 
     <server name="server" config-ref="server-config"> 
      <application-ref ref="__admingui" virtual-servers="__asadmin"></application-ref> 
      ... 
      <resource-ref ref="MyCustomStringResource"></resource-ref> 
      ... 
     </server> 
    </servers> 
0

pesci vetro e 3 up utilizza una grafica di amministrazione su localhost: 4848 utilizzare l'interfaccia grafica e andare a JDNI> risorse personalizzate> nuova risorsa

per la versione precedente di GlassFish che consiglierei cambiare il glassfish.xml creare un'istanza di una nuova risorsa utilizzando i prescrittori

Problemi correlati