IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:20.11.2013 14:05

Zdravím,
již pár hodin se marně snažím zprovoznit MySQL databázi pomocí JDBC v JSF. Používám NetBeans, v okně Services mám funkční spojení, ve zdrojovém kódu JavaBeanu získávám datasource jako:

@Resource(name="jdbc/webdbtest")
private DataSource ds;

Resource v web.xml mám, dostávám chybovou hlášku, že tabulka neexistuje. Když v resource upravím name na libovolný String, nic se nezmění, chyba tedy bude někde tam. Jako server používám Glassfish.

Odpovědět
20.11.2013 14:05
New kid back on the block with a R.I.P
Avatar
Silvinios
Tvůrce
Avatar
Silvinios:20.11.2013 18:52

Jak vypadá web.xml? Nějak takhle?

<resource-ref>
        <description>MySQL Datasource</description>
        <res-ref-name>jdbc/webdbtest</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
</resource-ref>

Jsi si jistý, že máš data source správně nastavený v Glassfish?

 
Nahoru Odpovědět
20.11.2013 18:52
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:20.11.2013 19:22

Podle Stackoverflow bys měl použít "lookup" místo "name"

http://stackoverflow.com/…resourcename

 
Nahoru Odpovědět
20.11.2013 19:22
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Silvinios
David Hartinger:20.11.2013 20:12

Ano, můj web.xml obsahuje toto:

<resource-ref>
        <res-ref-name>jdbc/WebDbTest</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

Čekal bych, že by to mělo fungovat i bez nastavení Glassfishe, který s DB teoreticky nesouvisí. Prakticky chápu, že spravuje spojení v poolu, mám v něm tento konfigurák:

<resources>
  <jdbc-resource enabled="true" jndi-name="jdbc/WebDbTest" object-type="user" pool-name="webdbtestPool">
    <description/>
  </jdbc-resource>
  <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="webdbtestPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.ConnectionPoolDataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
    <property name="URL" value="jdbc:mysql://localhost:3306/webdb?zeroDateTimeBehavior=convertToNull"/>
    <property name="User" value="root"/>
    <property name="Password" value=""/>
  </jdbc-connection-pool>
</resources>

Ani mi nejde o konkrétní aplikaci, chci opravdu jen z nového JSF projektu udělat to, aby vypsal obsah nějaké tabulky z DB a nedaří se mi to.

Nahoru Odpovědět
20.11.2013 20:12
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na coells
David Hartinger:20.11.2013 20:14

WOW, díky! :D Sice nevím proč je ve všech tutoriálech to name, ale lookup funguje.

Nahoru Odpovědět
20.11.2013 20:14
New kid back on the block with a R.I.P
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na David Hartinger
Silvinios:22.11.2013 17:36

Tak mě napadlo, sdraco, nechystáš náhodou tutoriály na J2EE? :)

 
Nahoru Odpovědět
22.11.2013 17:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Silvinios
David Hartinger:22.11.2013 17:43

Chystám :)

Nahoru Odpovědět
22.11.2013 17:43
New kid back on the block with a R.I.P
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.