🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #141979

Geronimo i połączenie z bazą danych

#141979
From: alien
Date: Tue, 28 Oct 2008 19:53
229 lines
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-mail

Show 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