-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: Authentifizierung nicht mit persistence.xml[solved]
PostPosted: Tue Apr 06, 2010 7:59 am 
Beginner
Beginner

Joined: Sat Mar 27, 2010 11:03 am
Posts: 27
Location: Berlin
Hallo,

ich verwende Hibernate mit Annotations in in einer JavaSE Umgebung.
Die Authentifizierungdaten sowie der DB-Host und DB Name stehen in der
persistence.xml.
Da dies natürlich in einer Anwendnung für mehrere Benutzer keinen Sinn macht
möchte ich diese Daten innerhalb der Software abfragen und damit die
Verbindung aufbauen.

Gibt es dafür einen einfacheren Weg als die xml-Datei zu manipulieren ?

Moe


Last edited by moe5k on Mon Apr 12, 2010 10:18 am, edited 2 times in total.

Top
 Profile  
 
 Post subject: Re: Authentifizierung nicht mit persistence.xml
PostPosted: Wed Apr 07, 2010 8:51 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Also auch ich waere an Loesungen dieser Art interessiert.

Momentan kenne ich nur folgende (zugegebenermassen etwas unorthodoxe) Loesung (fuer Standalone Anwendungen):

Statt hibernate.connection.url im persistence.xml zu spezifizieren spezifiziere ich:
Code:
<persistence-unit ... transaction-type="RESOURCE_LOCAL">
      <non-jta-data-source>java:/MyDatasource</non-jta-data-source>
      <properties>
            <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory"/>
            ...

Dies erlaubt mir eine Datasource zu verwenden, die ich in meiner Application von Hand initialisiere.
Die Datasource muss dann noch ans JNDI gebunden werden, bevor man die EntityManagerFactory startet.
Auf diese Weise kann ich die Connection URL und User/Passwd zu LaufZeit selber zusammenstellen, z.B.:

Code:
            InitialContext jndiCtx = new InitialContext( props );
            ComboPooledDataSource datasource = new ComboPooledDataSource(); // C3P0
            datasource.setDriverClass("org.hsqldb.jdbcDriver");
            datasource.setJdbcUrl("jdbc:hsqldb:hsql://localhost");
            datasource.setUser("sa");
            datasource.setPassword("");
            datasource.setMaxPoolSize(20);
   
            jndiCtx.bind("java:/MyDatasource", datasource);


Last edited by pb00067 on Wed Apr 07, 2010 9:53 am, edited 2 times in total.

Top
 Profile  
 
 Post subject: Re: Authentifizierung nicht mit persistence.xml
PostPosted: Wed Apr 07, 2010 9:43 am 
Beginner
Beginner

Joined: Sat Mar 27, 2010 11:03 am
Posts: 27
Location: Berlin
Vielen Dank für Deinen Post. Werde ich mal versuchen...
Ich habe inzwischen hier:
http://docs.jboss.org/hibernate/stable/ ... ation.html
(Punkt 2.2.2.Bootstraping)

noch gesehen, dass man der Methode createEntitymangerFactory noch einige
Parameter in einer Map mitgeben kann. Anscheindend aber weder einen Connection-String noch
Username bzw. Kennwort.

Moe


Top
 Profile  
 
 Post subject: Re: Authentifizierung nicht mit persistence.xml
PostPosted: Fri Apr 09, 2010 8:30 am 
Beginner
Beginner

Joined: Sat Mar 27, 2010 11:03 am
Posts: 27
Location: Berlin
Hallo,

habe es jetzt mal mit Deinem Workaround versucht, aber mir ist nicht klar was ich als "props"
angeben soll ?

Moe


Top
 Profile  
 
 Post subject: Re: Authentifizierung nicht mit persistence.xml
PostPosted: Fri Apr 09, 2010 11:30 am 
Beginner
Beginner

Joined: Sat Mar 27, 2010 11:03 am
Posts: 27
Location: Berlin
so gehts auch ohne den Workarround mit der JNDI :

Code:
   String dbDriver = "org.postgresql.Driver";
      String dbUrl = "jdbc:postgresql://localhost/dbname";
      String dbUser = "postgres";
      String dbPassword = "postgres";
      String dbDialect = "org.hibernate.dialect.PostgreSQLDialect";

      HashMap<String, String> props = new HashMap<String, String>();
      props.put("hibernate.connection.driver_class", dbDriver);
      props.put("hibernate.connection.url", dbUrl);
      props.put("hibernate.connection.username", dbUser);
      props.put("hibernate.connection.password", dbPassword);
      props.put("hibernate.dialect", dbDialect);
      props.put("hibernate.show_sql", "true");

      try
      {   
         emf = Persistence.createEntityManagerFactory("puname",props);
         em = emf.createEntityManager();
      }


und die persistence.xml:

Code:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
   <persistence-unit name="puname" transaction-type="RESOURCE_LOCAL">
   </persistence-unit>
</persistence>


hoffe es hilft vielleicht noch anderen ...

Moe


Top
 Profile  
 
 Post subject: Re: Authentifizierung nicht mit persistence.xml
PostPosted: Mon Apr 12, 2010 9:48 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Quote:
habe es jetzt mal mit Deinem Workaround versucht, aber mir ist nicht klar was ich als "props"
angeben soll ?


Gar nichts, braucht es nicht.


Top
 Profile  
 
 Post subject: Re: Authentifizierung nicht mit persistence.xml
PostPosted: Mon Apr 12, 2010 10:17 am 
Beginner
Beginner

Joined: Sat Mar 27, 2010 11:03 am
Posts: 27
Location: Berlin
pb00067 wrote:
Quote:
habe es jetzt mal mit Deinem Workaround versucht, aber mir ist nicht klar was ich als "props"
angeben soll ?


Gar nichts, braucht es nicht.


Richtig, jetzt nicht mehr.
Aber mit Deinem Vorschlag und der JNDI Datenquelle schon sonst kam immer eine Exception.
Aber egal. Läuft jetzt so wie in meinem vorherigen Post beschrieben wunderbar.

Moe


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.