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.