tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Omar Adobati <omar.adob...@gmail.com>
Subject Re: [SOLVED] Form Auth + xml users database
Date Mon, 07 Feb 2005 08:57:32 GMT
Thx for ur answers, I have reied what you say about the second
question, but it's do not work. This is how I have changed my
"context.xml" file:
===
<?xml version='1.0' encoding='utf-8'?>
<Context privileged="true" swallowOutput="true"
workDir="work\Catalina\photoalbum\" path="/" cacheTTL="0"
cachingAllowed="false" displayName="bannerEmbedded beta" docBase="."
cacheMaxSize="0" reloadable="true">
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="PhotoAlbum"/>
  <Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs/photoalbum/" fileDateFormat="yyyy-MM-dd" suffix=".txt"
prefix="photoalbum_access_log."/>
  <!--<ResourceLink name="PhotoAlbum" global="PhotoAlbum"
type="org.apache.catalina.UserDatabase"/>-->
  <Resource type="org.apache.catalina.UserDatabase" description="User
database that can be updated and saved" auth="Container"
name="PhotoAlbum"/>
    <ResourceParams name="PhotoAlbum">
    <parameter>
      <name>factory</name>
      <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
    </parameter>
    <parameter>
      <name>pathname</name>
      <value>conf/Catalina/photoalbum.localhost/photoalbum-users.xml</value>
    </parameter>
  </ResourceParams>  
</Context>
===

I have removed the ResourceParams from the server.xml file and move it
into the context.xml but in the log I can read this errors messages:
1) javax.naming.NameNotFoundException: Name PhotoAlbum is not bound in
this Context
2) GRAVE: Catalina.start: 
LifecycleException:  No UserDatabase component found under key PhotoAlbum
3) 2005-02-07 09:55:30 UserDatabaseRealm[photoalbum.localhost]:
Exception looking up UserDatabase under key PhotoAlbum
javax.naming.NameNotFoundException: Name PhotoAlbum is not bound in this Context

do u know why? I have I have give you all the elements you need to help me.


On Sun, 06 Feb 2005 22:21:21 +0100, Mario Winterer
<mario.winterer@eduhi.at> wrote:
> Hi!
> 
> I'm happy you could solve your problem now! Seems the reason was the
> missing Realm-definition in your context.xml.
> 
> To Question 1)
> Tomcat offers a separate JNDI-namespace for each web application (so if
> you have 4 web applications you will have 4 namespaces). These
> namespaces are configured in the <context>-elements of the corresponsing
> web-applications. To define resources, you have to nest a
> <Resource>-element in your <context>-element (which should be in
> context.xml).
> A resource that is defined in the namespace of a web application cannot
> be seen by other web applications (because the namespaces are separated
> from each other).
> Sometimes, a resource may be required by more than one web application.
> To avoid configuring this resource several times - once per context -
> tomcat offers another namespace that is global and exists only once per
> tomcat instance. If you define a resource there, you can use it in each
> web application, that is allowed to use it.
> So how can you allow a web application to use a global resource? Simply
> "link" the global resource into the local JNDI-namespace of the
> web-application! This can be done by nesting a <ResourceLink> element in
> the <context> element of the web-application that should be allowed to
> use the resource. When defining a <ResourceLink>-element, you must
> specify, which global resource you want to link into the namespace
> (attribut "global"), which type the resource is that you want to link
> (attribut "type"), and which name it should have in the local namespace
> (attribut "name") - this name can be equal to the global name.
> 
> So the server.xml and context.xml hierarchy could look like the
> following (sorry for the "text-art" - use a fixed width font for "best
> results"):
> 
> +- Server
>   |
>   +- GlobalNamingResources
>   |  +- Resource GlobResA
>   |  +- Resource GlobResB
>   |
>   +- Service
>      +- Engine
>         +- Realm X
>         +- Host www.A.org
>         |  +- Context /A1 (defined in context.xml)
>         |  |  +- ResourceLink to GlobResA, name: LocResA
>         |  |
>         |  +- Context /A2 (defined in context.xml)
>         |  |  +- ResourceLink to GlobResA, name: LocResA
>         |  |  +- ResourceLink to GlobResB, name: LocResB
>         |  |
>         |  +- Context /A3 (defined in context.xml)
>         |     +- Resource, name LocalResA
>         |
>         +- Host www.B.org
>            +- Context /B1
>            |  +- ResourceLink to GlobResA, name: LocResA
>            |
>            +- Context /B2
>               +- ResourceLink to GlobResB, name: LocResB
> 
> Question 2) If you do not want to change server.xml (e.g. because you
> want to deploy your application to a foreign server and you cannot
> modify server.xml there), you could define a local JNDI-Resource in the
> <context>-element of your web-application instead of the
> GlobalNamingResource (simply move the resource-definition from
> <GlobalNamingResource> into your <context>-element). If you do this, of
> course you do not need the <ResourceLink> any more!
> So you do not have to touch server.xml because all configurations can be
> done inside context.xml which is in the meta-inf directory of your web
> application.
> 
> I hope, my explanations where understandable!
> 
> Best regards,
>  Tex
> 
> 
> Omar Adobati wrote:
> 
> >changes in server.xml:
> >===
> ><GlobalNamingResources>
> >
> >  <Resource type="org.apache.catalina.UserDatabase" description="User
> >database that can be updated and saved" auth="Container"
> >name="PhotoAlbum"/>
> >    <ResourceParams name="PhotoAlbum">
> >    <parameter>
> >      <name>factory</name>
> >      <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
> >    </parameter>
> >    <parameter>
> >      <name>pathname</name>
> >      <value>conf/Catalina/photoalbum.localhost/photoalbum-users.xml</value>
> >    </parameter>
> >  </ResourceParams>
> >
> ></GlobalNamingResources>
> >===
> >
> >changes in [context].xml
> >===
> ><?xml version='1.0' encoding='utf-8'?>
> ><Context privileged="true" swallowOutput="true"
> >workDir="work\Catalina\photoalbum\" path="/" cacheTTL="0"
> >cachingAllowed="false" displayName="bannerEmbedded beta" docBase="."
> >cacheMaxSize="0" reloadable="true">
> >  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
> >resourceName="PhotoAlbum"/>
> >  <Valve className="org.apache.catalina.valves.AccessLogValve"
> >directory="logs/photoalbum/" fileDateFormat="yyyy-MM-dd" suffix=".txt"
> >prefix="photoalbum_access_log."/>
> >  <ResourceLink name="PhotoAlbum" global="PhotoAlbum"
> >type="org.apache.catalina.UserDatabase"/>
> > </Context>
> >===
> >
> >Question 1)
> >Also if I've red the tomcat site docs I cant understand so good what
> >ResourceLink does. Does anyone can explain me?
> >
> >Question 2)
> >Using this approach I have changed the server.xml manually. So, if I
> >need/want to deploy my own webapp using a war file, which approach I
> >have to use?
> >
> >(I'm sorry fot my bad english...)
> >
> >On Sun, 6 Feb 2005 20:00:04 +0100, Omar Adobati <omar.adobati@gmail.com> wrote:
> >
> >
> >>>But did you "connect" the UserDatabase
> >>>with the web-application by specifying a realm in your context?
> >>>(context.xml or server.xml)
> >>>
> >>>
> >>How can I set the Realm in my Context to specity an xml database?
> >>(maybe this is the main problem because it actually not exist)
> >>
> >>
> >>
> >
> >
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> 


-- 
Adobati Omar
omar.adobati@gmail.com

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message