Article View: pl.comp.lang.java
Article #141979Geronimo i połączenie z bazą danych
From: alien
Date: Tue, 28 Oct 2008 19:53
Date: Tue, 28 Oct 2008 19:53
229 lines
8509 bytes
8509 bytes
Witam,
powoli zaczynam sobie już włosy z głowy wyrywać, bo nie mogę sobie z
tym problemem poradzić...
krótki wstęp: chciałbym połączyć się z bazą danych MySQL z poziomu
jakiegoś DAO, pobrać cokolwiek i przekazać gdziekolwiek dalej do
wyświetlenia
używam: Geronimo, openjpa, maven, jsf, ejb3
no i teraz tak:
persistence.xml (znajduje się w webapp/META-INF)
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<persistence-unit name="bazadb">
<class>pl.test.entity.User</class>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema"/>
<property name="openjpa.ConnectionURL"
value="jdbc:mysql://jakisURL.pl:3306/jakasBaza"/>
<property name="openjpa.ConnectionDriverName"
value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionUserName"
value="userName"/>
<property name="openjpa.ConnectionPassword"
value="haslo"/>
</properties>
</persistence-unit>
</persistence>
applicationContext.xml
(...)
<bean id="userManagementDAO"
class="pl.test.dao.UserManagementDAOBean"/>
<bean name="userFaces" class="pl.test.faces.UserFaces">
<property name="userManagementDAO">
<ref bean="userManagementDAO"/>
</property>
</bean>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</
view-handler>
<el-
resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-
resolver>
</application>
<managed-bean>
<managed-bean-name>userFaces</managed-bean-name>
<managed-bean-class>pl.test.faces.UserFaces</managed-bean-
class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>userManagementDAO</property-
name>
<value>#{userManagementDAO}</value>
</managed-property>
</managed-bean>
</faces-config>
geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1">
<environment>
<moduleId>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<type>war</type>
</moduleId>
</environment>
</web-app>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>test</display-name>
<listener>
<listener-
class>org.springframework.web.context.ContextLoaderListener</listener-
class>
</listener>
<context-param>
<param-name>facelets.REFRESH_PERIOD</param-name>
<param-value>2</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jsp</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-
class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>
i teraz tak... jakieś JSP spokojnie pobiera sobie dane z UserFaces, to
zaś bierze dane z UserManagementDAOBean (o ile na sztywno w tym
ostatnim podam np. jakiegoś string'a do przekazania). Jeśli zaś w tym
DAO próbuję pobrać coś z bazy i przekazać dalej - nie mogę...
UserFaces
(...)
UserManagementDAO userManagementDAO;
public String login = "";
public void setLogin(String login) {
this.login = login;
}
public String getLogin() {
User obiekt = userManagementDAO.getOneUser("Karol");
return obiekt.getLogin();
}
public void setUserManagementDAO(UserManagementDAO
userManagementDAO) {
this.userManagementDAO = userManagementDAO;
}
(...)
UserManagementDAOBean
(...)
@Stateless
@Remote
public class UserManagementDAOBean implements UserManagementDAO {
@PersistenceContext(unitName = "bazadb")
private EntityManager em;
public User getOneUser(String name) {
Query query = em.createNamedQuery("getOneUser");
query.setParameter("name", name);
User userEntity = (User) query.getSingleResult();
System.out.println("user: " +
userEntity.getFirstName());
return userEntity;
}
}
User (encja)
(...)
@NamedQueries(value= {
@NamedQuery(name = "getOneUser",
query = "SELECT Object(e)"
+ " FROM User e"
+ " WHERE e.firstName
= :name")
})
@Entity
@Table (name="TABELA_USEROW")
public class User {
private Long idUser;
private String login;
private String firstName;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getIdUser() {
return idUser;
}
(...)
Ogólnie to gdy wykonam powyższy kod dostaje wyjątek
java.lang.NullPointerException, jakoby przekazywana wartość była
null'em - czyli nic nie pobrano z bazy (a w bazie na pewno są dane do
pobrania).
Gdy robie jakieś celowe błędy w danych dostępowych do bazy w
persistence.xml to nie wyrzuca żadnego błędu, stąd pomysł, że w ogóle
z bazą nie próbuje się połączyć (nie może znaleźć persistence.xml /
coś pominąłem?)
Będę wdzięczny za każdą pomoc.
Technical Details
Message-ID:
<23f87ada-5ab2-4a19-b1e3-1a4cd56f4e49@f40g2000pri.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!news.us.edu.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!proxad.net!feeder1-2.proxad.net!64.233.178.134.MISMATCH!postnews.google.com!f40g2000pri.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!news.us.edu.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!proxad.net!feeder1-2.proxad.net!64.233.178.134.MISMATCH!postnews.google.com!f40g2000pri.googlegroups.com!not-for-mail From: alien <zielinski.karol@gmail.com> Newsgroups: pl.comp.lang.java Subject: Geronimo i połączenie z bazą danych Date: Tue, 28 Oct 2008 12:53:33 -0700 (PDT) Organization: http://groups.google.com Lines: 233 Message-ID: <23f87ada-5ab2-4a19-b1e3-1a4cd56f4e49@f40g2000pri.googlegroups.com> NNTP-Posting-Host: 83.238.150.41 Mime-Version: 1.0 X-Trace: posting.google.com 1225223614 27787 127.0.0.1 (28 Oct 2008 19:53:34 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 28 Oct 2008 19:53:34 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: f40g2000pri.googlegroups.com; posting-host=83.238.150.41; posting-account=1xWhuQoAAACk665GVwnz4MoMdDlSB4ms User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3,gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit