db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Hillegas <rick.hille...@oracle.com>
Subject Re: AW: AW: schema-questions
Date Mon, 23 Jul 2012 14:31:04 GMT
On 7/23/12 7:09 AM, Malte.Kempff@de.equens.com wrote:
> Hi Rick,
> I am not sure if wrapping datasource is really a good place, because as far I understand
the datasource is produced by the ApplicationServer.
Hi Malte,

Once again, I am outside my depth. I thought that app servers typically 
let you use an xml descriptor file to configure the DataSource along 
with other database bindings. In this solution you would edit that xml 
descriptor file and replace the name of the Derby DataSource with the 
name of your wrapper DataSource. But, as I said, I'm waving my hands.
> The hint I got was producing an own authentication by implementing org.apache.derby.authentication.UserAuthenticator
interface
> If I do that, how can I put this to derby. I guees, since derby.authentication.provider
has explicit values, I need to register it somehow within derby programmaticly, is that right?
The link below does not give me enough detail to understand this 
solution. Off the top of my head, I don't understand how you can solve 
this problem by writing a custom authenticator. A custom authenticator 
is only used to evaluate credentials. It has no access to the session 
and therefore has no ability to change the current schema. Its simple 
api is described here: 
http://db.apache.org/derby/javadoc/publishedapi/jdbc4/org/apache/derby/authentication/UserAuthenticator.html

Hope this helps,
-Rick
> Malte
>
> -----Ursprüngliche Nachricht-----
> Von: Rick Hillegas [mailto:rick.hillegas@oracle.com]
> Gesendet: Montag, 23. Juli 2012 15:48
> An: derby-user@db.apache.org
> Betreff: Re: AW: schema-questions
>
> On 7/23/12 6:34 AM, Malte.Kempff@de.equens.com wrote:
>> Hi to all,
>> I tried to find something on the internet belongig to my question:
>> what is to do for connecting with a user to a different schema than
>> the username or APP.
>> Actually I found 2 hints
>>
>>    1.
>>        use SET CURRENT SCHEMA
>>    2.
>>        Make your own custom authentication
>>
>> Source of above hints is this site:
>> http://www.oreillynet.com/onjava/blog/2006/07/on_derby.html
>> <http://www.oreillynet.com/onjava/blog/2006/07/on_derby.html>   that is
>> from 2006 Well choice 1. is not really usable when a datasource is to
>> be defined, is it?
>> Choice 2.seems to be a bit overheaded. Is it so exotic to connect with
>> a user using a different schema so nobody know how to or an custom
>> implementation needs to be produced on ones own?
>> Or is there a way in the newest release of Derby?
> Hi Malte,
>
> There is nothing new in this area in the latest 10.9.1 release of Derby.
>
> You might be able to workaround this problem by writing your own thin DataSource which
wraps the DataSource you are currently using. Your wrapping DataSource would issue a SET SCHEMA
command before returning from its getConnection() methods.
>
> Hope this helps,
> -Rick
>> Thanks for hints in advance
>> Malte
>> *Von:* Malte.Kempff@de.equens.com [mailto:Malte.Kempff@de.equens.com]
>> *Gesendet:* Freitag, 20. Juli 2012 18:56
>> *An:* derby-user@db.apache.org
>> *Betreff:* schema-questions
>>
>>
>> Somehow I ask now myself, how I can connect to another schema than the
>> username.
>> Currently I have a user tech that is suppose to connect to the schema
>> user_stuff via DataSource I tried now this but obviously ist not
>> correct becides the password is still ignored also the schema seems
>> not to be declared like this Context.xml for defining the DataSource:
>>
>> <?xml version="1.0" encoding="UTF-8"?>  <Context>  <Resource
>> name="jdbc/testdb"
>>                auth="Container"
>>                type="javax.sql.DataSource"
>>                username="tech"
>>                password="schnaddel"
>> *schema="USER_STUFF"
>> *              driverClassName="org.apache.derby.jdbc.ClientDriver"
>>                url="jdbc:derby://localhost:1527/testdb"
>>                maxActive="10"
>>                maxIdle="4"/>
>> </Context>
>>
>> Does anybody know what is to be used to be on the right schema
>> 'USER_STUFF' ?
>>
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Tim Watts [mailto:tim@cliftonfarm.org]
>> Gesendet: Donnerstag, 19. Juli 2012 18:44
>> An: Derby Discussion
>> Betreff: Re: AW: AW: AW: schema-questions
>>
>> On Thu, 2012-07-19 at 17:23 +0200, Malte.Kempff@de.equens.com wrote:
>>> Do I get it right, that the threads defined in Network server of
>>> derby should correspond with amount of connections in defined data
>>> source for derby in the Application Server, where it is running in?
>>> Is there any best practice?
>>>
>> I suppose so but not necessarily.  Unless you have an uncontrollable
>> need to complicate life I would leave it at the default of 0 ("elastic
>> mode").  This way Derby will spawn a thread to service each connection
>> as it's made.  A non-zero value will make that the upper limit for
>> worker threads.  Not that Derby will refuse further connections once
>> the max is reached; only that the new connections will have to wait
>> for CPU time until one of the other threads is done or it's timeSlice
>> has expired. (But, of course, adding more threads doesn't magically
>> create more CPU capacity.  So I imagine a non-zero value would be
>> balanced against the number of available cores/CPUs?)  I'm writing
>> from a theoretical perspective here as I haven't actually messed with
>> any of this.
>>
>> My impression is that your goal is to explore web app development
>> using Derby.  In general, focusing on performance tuning in the
>> absence of an actual performance issue is not going to be very productive.
>>
>>
>>> Malte
>>>
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Tim Watts [mailto:tim@cliftonfarm.org]
>>> Gesendet: Mittwoch, 18. Juli 2012 17:48
>>> An: Derby Discussion
>>> Betreff: Re: AW: AW: schema-questions
>>>
>>> Hi Malte,
>>>
>>> On Wed, 2012-07-18 at 13:44 +0200, Malte.Kempff@de.equens.com wrote:
>>>> Hi Tim
>>>> My JAVA_OPS look like that, when I use set command:
>>>> JAVA_OPTS=-Dderby.system.home=c:\derby-dbs
>>> That looks reasonable.
>>>
>>>> I suppose that the JAVA_OPTS are recognized by derby in my
>>>> particular case. Otherweise I would not understand why derby
>>>> produces and writes and reads from the given directory.
>>>> It is a bit of unexplainable to me, since today it works with
>>>> following ij call java %JAVA_OPTS% -Dij.protocol=jebc:derby: -jar
>>>> %DERBY_HOME %/lib/derbyrun.jar ij
>>>> ij>  connect
>>>> 'jdbc:derby://localhost:1527/testdb;create=true;user=tralla;passwo
>>>> rd
>>>> =d
>>>> uddeldi';
>>>> Here I get the expected error now:
>>>> FEHLER 08004: Die Verbindung konnte nicht authentifiziert werden.
>>>> Ursache: Die Benutzer-ID oder das Kennwort ist ung³ltig.
>>>>
>>>>
>>>> Yesterday it did not work neither via ij nor within tomcat. Always
>>>> it did not matter whether the right password or user was set or not.
>>> It would be very difficult to figure out exactly what actually
>> happened between yesterday and today from a few sketchy details.  It
>> probably doesn't matter much at this point.
>>>> Using tomcat I still get that ignoring of derby.properties,
>>> Did you try invoking test.jsp from my last post?  That would tell
>> you if the running instance of Tomcat had a JAVA_OPTS and
>> derby.system.home passed through to it.
>>>> at least the password I am using seems not to matter at all Here
>>>> my entry in context.xml for tomcat similar to the recommanded one
>>>> I found in http://www.zetcode.com/db/apachederbytutorial/tomcat/
>>>> <?xml version="1.0" encoding="UTF-8"?>  <Context>  <Resource
>>>> name="jdbc/testdb"
>>>>                auth="Container"
>>>>                type="javax.sql.DataSource"
>>>>                username="tech"
>>>>                password="schnaddel"
>>>>                driverClassName="org.apache.derby.jdbc.ClientDriver"
>>>>                url="jdbc:derby://localhost:1527/testdb"
>>>>                maxActive="10"
>>>>                maxIdle="4"/>
>>>>
>>>> </Context>
>>>>
>>>> The right password is supposed to be something else , but it works
>>>> :-D
>>>> (?!)
>>>>
>>>> By the way (sorry for asking such a question of beginners :-)):
>>>> Using the web-app of derby (Derby Network Server) there is the
>>>> option to change max amount of threads and thread time slices.
>>>> What does that mean exactly? Could that interfere with the
>>>> definition of DataSource within context.xml, or is that something
>>>> totally different?
>>> See
>>> http://db.apache.org/derby/docs/10.8/adminguide/tadminconfiguringthe
>>> ne
>>> tworkserver.html
>>>
>>>>
>>> Lastly, let me point out that there is absolutely NO requirement to
>> run the Derby war in order to use Derby from a web application.  You
>> could just as easily run the Derby Network Server in a separate
>> process or use an embedded Derby engine.  Just wanted to point that
>> out so you and others aware of the possibilities.
>>>>
>>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: Tim Watts [mailto:tim@cliftonfarm.org]
>>>> Gesendet: Dienstag, 17. Juli 2012 22:36
>>>> An: Derby Discussion
>>>> Betreff: Re: AW: schema-questions
>>>>
>>>> On Tue, 2012-07-17 at 18:13 +0200, Malte.Kempff@de.equens.com wrote:
>>>>> I start tomcat (version 6) with ist startup batch file only
>>>>>
>>>> OK.  What displays when you type  echo %JAVA_OPTS%  at the command
>>>> prompt?
>>>>
>>>> To verify whether it's being passed through to Tomcat try saving
>>>> the following to webapps/ROOT/test.jsp then pointing your browser
>>>> to http://localhost:8080/test.jsp .
>>>>
>>>> test.jsp:
>>>> ---------
>>>> <html>
>>>> <body>
>>>> derby.system.home=<%= System.getProperty("derby.system.home")
>>>> %><br>  JAVA_OPTS=<%= System.getenv("JAVA_OPTS") %><br>
 </body>
>>>> </html>
>>>>
>>>> I have verified on my system that derby.properties is recognized
>>>> when setting derby.system.home via JAVA_OPTS. (Derby 10.8.1.2)
>>>>
>>>>
>>>>> -----Ursprüngliche Nachricht-----
>>>>> Von: Tim Watts [mailto:tim@cliftonfarm.org]
>>>>> Gesendet: Dienstag, 17. Juli 2012 18:08
>>>>> An: Derby Discussion
>>>>> Betreff: Re: schema-questions
>>>>>
>>>>> On Tue, 2012-07-17 at 16:44 +0200, Malte.Kempff@de.equens.com wrote:
>>>>>> Another thing I am wondreing is, that it seems not to matter
>>>>>> using a user or not using following derby.properties, though:
>>>>>> derby.stream.error.logSeverityLevel=0
>>>>>> derby.database.fullAccessUsers=tech
>>>>>> derby.database.defaultConnectionMode=readOnlyAccess
>>>>>> derby.connection.requireAuthentication=true
>>>>>> derby.user.tech=lala_dongs
>>>>>> derby.user.rou=gaga_bings
>>>>>>
>>>>>> derby.authentication.provider=builtin
>>>>>>
>>>>>>
>>>>>> derby seems not to use my derby.proerties. I have put them to
>>>>>> the directory, which is given in the derby.system.home
>>>>>> Java-system-property.
>>>>>> It is told to put this system-property into the environment
>>>>>> variable JAVA_OPTS, so tomcat would use it for starting up.
>>>>>> I am using  Windows-XP so I defined ths environment-variable
>>>>>> in the dialog as user defined variable.
>>>>>> What am I missing, since derby.properties seem not to work may
>>>>>> be not even been read.
>>>>>>
>>>>> Are you running Tomcat as a service?  If so then see this:
>>>>>
>>>>>
>>>>> http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.ht
>>>>> ml
>>>>>
>>>>> (adjust according to the tomcat version you're using).
>>>>>
>>>>>> Thanks for hints in advance
>>>>>>
>>>>>> Malte
>>>>>>
>


Mime
View raw message