Context.xml not updating dataSource

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

Context.xml not updating dataSource

Francis Judge-2
I am using Tomcat 6.0.18 and am using jTDS to connect to SQL Server
2005. The application is working fine in development (I'm using Netbeans
6.5) and I build the WAR from the IDE at the moment. When I deploy the
WAR to the test server I update the context.xml to point the database
connection URL to the testing SQL Server, and restart the application
server. But, the DataSource is still using the settings from the WAR
that I deployed and not reading the new values that I changed in the
context.xml. If I put the testing details into the context.xml before I
build the WAR then they are the ones used and everything works
correctly. Surely this is not how Tomcat is intended to behave?

Francis

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

markt
Francis Judge wrote:
> I am using Tomcat 6.0.18 and am using jTDS to connect to SQL Server
> 2005. The application is working fine in development (I'm using Netbeans
> 6.5) and I build the WAR from the IDE at the moment. When I deploy the
> WAR to the test server

How do you deploy your WAR? Is unpackWARs true or false?

> I update the context.xml to point the database

Exactly which file do you edit?

> connection URL to the testing SQL Server, and restart the application
> server. But, the DataSource is still using the settings from the WAR
> that I deployed and not reading the new values that I changed in the
> context.xml. If I put the testing details into the context.xml before I
> build the WAR then they are the ones used and everything works
> correctly. Surely this is not how Tomcat is intended to behave?

It may not be how you intended Tomcat to behave. How Tomcat should
behave will depend on the answers to the questions above.

Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

Francis Judge-2
I'm editing the context.xml in the application's MET-INF directory. The
following is what it contains:
Resource name="*DB/TMS*" auth="*Container*"
type="*javax.sql.DataSource*" username="*********" password="*********"
driverClassName="*net.sourceforge.jtds.jdbcx.JtdsDataSource*"
url="*jdbc:jtds:sqlserver://localhost:1433;DatabaseName=TMS*"
maxActive="*8*" maxIdle="*1*" removeAbandoned="*true*"
I have not set the 'unpackWARs' option anywhere but I deploy through the
tomcat administrative console.

Mark Thomas wrote:

> Francis Judge wrote:
>  
>> I am using Tomcat 6.0.18 and am using jTDS to connect to SQL Server
>> 2005. The application is working fine in development (I'm using Netbeans
>> 6.5) and I build the WAR from the IDE at the moment. When I deploy the
>> WAR to the test server
>>    
>
> How do you deploy your WAR? Is unpackWARs true or false?
>
>  
>> I update the context.xml to point the database
>>    
>
> Exactly which file do you edit?
>
>  
>> connection URL to the testing SQL Server, and restart the application
>> server. But, the DataSource is still using the settings from the WAR
>> that I deployed and not reading the new values that I changed in the
>> context.xml. If I put the testing details into the context.xml before I
>> build the WAR then they are the ones used and everything works
>> correctly. Surely this is not how Tomcat is intended to behave?
>>    
>
> It may not be how you intended Tomcat to behave. How Tomcat should
> behave will depend on the answers to the questions above.
>
> Mark
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
>
>  

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

markt
Francis Judge wrote:
> I'm editing the context.xml in the application's MET-INF directory. The
> following is what it contains:
> Resource name="*DB/TMS*" auth="*Container*"
> type="*javax.sql.DataSource*" username="*********" password="*********"
> driverClassName="*net.sourceforge.jtds.jdbcx.JtdsDataSource*"
> url="*jdbc:jtds:sqlserver://localhost:1433;DatabaseName=TMS*"
> maxActive="*8*" maxIdle="*1*" removeAbandoned="*true*"
> I have not set the 'unpackWARs' option anywhere but I deploy through the
> tomcat administrative console.

You are editing the wrong file. When a web application is first
deployed, any META-INF/context.xml is copied to
CATALINA_BASE/conf/<enginename>/<hostname> (usually
CATALINA_BASE/conf/Catalina/localhost) and renamed to appName.xml. Eg
for a war file named myapp.war a META-INF/context.xml would be renamed
to myapp.xml#

Edit the copy of the context.xml file and all will work as you expect.

Mark


> Mark Thomas wrote:
>> Francis Judge wrote:
>>  
>>> I am using Tomcat 6.0.18 and am using jTDS to connect to SQL Server
>>> 2005. The application is working fine in development (I'm using Netbeans
>>> 6.5) and I build the WAR from the IDE at the moment. When I deploy the
>>> WAR to the test server
>>>    
>>
>> How do you deploy your WAR? Is unpackWARs true or false?
>>
>>  
>>> I update the context.xml to point the database
>>>    
>>
>> Exactly which file do you edit?
>>
>>  
>>> connection URL to the testing SQL Server, and restart the application
>>> server. But, the DataSource is still using the settings from the WAR
>>> that I deployed and not reading the new values that I changed in the
>>> context.xml. If I put the testing details into the context.xml before I
>>> build the WAR then they are the ones used and everything works
>>> correctly. Surely this is not how Tomcat is intended to behave?
>>>    
>>
>> It may not be how you intended Tomcat to behave. How Tomcat should
>> behave will depend on the answers to the questions above.
>>
>> Mark
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>
>>
>>  
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

Francis Judge-2
Brilliant, I didn't see this in any of the documentation that read.
Thanks for the help

Francis

Mark Thomas wrote:

> Francis Judge wrote:
>  
>> I'm editing the context.xml in the application's MET-INF directory. The
>> following is what it contains:
>> Resource name="*DB/TMS*" auth="*Container*"
>> type="*javax.sql.DataSource*" username="*********" password="*********"
>> driverClassName="*net.sourceforge.jtds.jdbcx.JtdsDataSource*"
>> url="*jdbc:jtds:sqlserver://localhost:1433;DatabaseName=TMS*"
>> maxActive="*8*" maxIdle="*1*" removeAbandoned="*true*"
>> I have not set the 'unpackWARs' option anywhere but I deploy through the
>> tomcat administrative console.
>>    
>
> You are editing the wrong file. When a web application is first
> deployed, any META-INF/context.xml is copied to
> CATALINA_BASE/conf/<enginename>/<hostname> (usually
> CATALINA_BASE/conf/Catalina/localhost) and renamed to appName.xml. Eg
> for a war file named myapp.war a META-INF/context.xml would be renamed
> to myapp.xml#
>
> Edit the copy of the context.xml file and all will work as you expect.
>
> Mark
>
>
>  
>> Mark Thomas wrote:
>>    
>>> Francis Judge wrote:
>>>  
>>>      
>>>> I am using Tomcat 6.0.18 and am using jTDS to connect to SQL Server
>>>> 2005. The application is working fine in development (I'm using Netbeans
>>>> 6.5) and I build the WAR from the IDE at the moment. When I deploy the
>>>> WAR to the test server
>>>>    
>>>>        
>>> How do you deploy your WAR? Is unpackWARs true or false?
>>>
>>>  
>>>      
>>>> I update the context.xml to point the database
>>>>    
>>>>        
>>> Exactly which file do you edit?
>>>
>>>  
>>>      
>>>> connection URL to the testing SQL Server, and restart the application
>>>> server. But, the DataSource is still using the settings from the WAR
>>>> that I deployed and not reading the new values that I changed in the
>>>> context.xml. If I put the testing details into the context.xml before I
>>>> build the WAR then they are the ones used and everything works
>>>> correctly. Surely this is not how Tomcat is intended to behave?
>>>>    
>>>>        
>>> It may not be how you intended Tomcat to behave. How Tomcat should
>>> behave will depend on the answers to the questions above.
>>>
>>> Mark
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [hidden email]
>>> For additional commands, e-mail: [hidden email]
>>>
>>>
>>>
>>>  
>>>      
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>    
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
>
>  

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

Rainer Frey (Inxmail GmbH)
In reply to this post by markt
On Monday 22 June 2009 12:02:49 Mark Thomas wrote:

> You are editing the wrong file. When a web application is first
> deployed, any META-INF/context.xml is copied to
> CATALINA_BASE/conf/<enginename>/<hostname> (usually
> CATALINA_BASE/conf/Catalina/localhost) and renamed to appName.xml. Eg
> for a war file named myapp.war a META-INF/context.xml would be renamed
> to myapp.xml#
>
> Edit the copy of the context.xml file and all will work as you expect.

What is the reason for this behavior? It seems quite counterintuitive. If I
package a new version of my application with updated configuration, I usually
expect that this configuration is used when I deploy this application, esp.
with the manager deployment functionality.

If I want to deploy the application on different tomcat installations, I have
to delete the file from CATALINA_BASE/conf on each one, and it even might
have a different path on each. So this behavior causes more work for my use
case, and I have to do s.th. in addition to the standard deployment call. Is
there a benefit from it?

> Mark

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

markt
Rainer Frey wrote:

> On Monday 22 June 2009 12:02:49 Mark Thomas wrote:
>
>> You are editing the wrong file. When a web application is first
>> deployed, any META-INF/context.xml is copied to
>> CATALINA_BASE/conf/<enginename>/<hostname> (usually
>> CATALINA_BASE/conf/Catalina/localhost) and renamed to appName.xml. Eg
>> for a war file named myapp.war a META-INF/context.xml would be renamed
>> to myapp.xml#
>>
>> Edit the copy of the context.xml file and all will work as you expect.
>
> What is the reason for this behavior? It seems quite counterintuitive. If I
> package a new version of my application with updated configuration, I usually
> expect that this configuration is used when I deploy this application, esp.
> with the manager deployment functionality.
>
> If I want to deploy the application on different tomcat installations, I have
> to delete the file from CATALINA_BASE/conf on each one, and it even might
> have a different path on each. So this behavior causes more work for my use
> case, and I have to do s.th. in addition to the standard deployment call. Is
> there a benefit from it?

1. In production, the operations folks don't have to unpack the app,
edit the context file and re-pack the app to edit the configuration.

2. When a new version of the app is installed, the environment specific
configuration isn't lost.

If you want to remove the old configuration, undeploy the app first
which will remove the old configuration file.

Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

Rainer Frey (Inxmail GmbH)
On Monday 22 June 2009 13:53:47 Mark Thomas wrote:

> Rainer Frey wrote:
> > On Monday 22 June 2009 12:02:49 Mark Thomas wrote:
> >> You are editing the wrong file. When a web application is first
> >> deployed, any META-INF/context.xml is copied to
> >> CATALINA_BASE/conf/<enginename>/<hostname> (usually
> >> CATALINA_BASE/conf/Catalina/localhost) and renamed to appName.xml. Eg
> >> for a war file named myapp.war a META-INF/context.xml would be renamed
> >> to myapp.xml#
> >>
> >> Edit the copy of the context.xml file and all will work as you expect.
> >
> > If I want to deploy the application on different tomcat installations, I
> > have to delete the file from CATALINA_BASE/conf on each one, and it even
> > might have a different path on each.
>
> If you want to remove the old configuration, undeploy the app first
> which will remove the old configuration file.

Thanks, this was the point I missed.

> Mark

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

Rainer Frey (Inxmail GmbH)
In reply to this post by markt
On Monday 22 June 2009 13:53:47 Mark Thomas wrote:

> >> Edit the copy of the context.xml file and all will work as you expect.
> >
> 1. In production, the operations folks don't have to unpack the app,
> edit the context file and re-pack the app to edit the configuration.
>
> 2. When a new version of the app is installed, the environment specific
> configuration isn't lost.
>
> If you want to remove the old configuration, undeploy the app first
> which will remove the old configuration file.

A an aside, wouldn't it be nice if it were configurable whether tomcat copies
the context.xml to $CATALINA_BASE/conf?  Then administrators could decide to
never have local configuration and always rely on the config within the war?

> Mark

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: Context.xml not updating dataSource

Mike Frohme
Sorry for the late reply, Rainer.

There is, in principle.  Set deployXML to false in the Host declaration in your server.xml and it will do exactly what you want.  On the flip side, tomcat will remove the configuration when the app is undeployed, so you need a little care in your deployment process.

--
Mike

-----Original Message-----
From: Rainer Frey [mailto:[hidden email]]
Sent: Tuesday, June 23, 2009 3:07 AM
To: Tomcat Users List
Subject: Re: Context.xml not updating dataSource

On Monday 22 June 2009 13:53:47 Mark Thomas wrote:

> >> Edit the copy of the context.xml file and all will work as you expect.
> >
> 1. In production, the operations folks don't have to unpack the app,
> edit the context file and re-pack the app to edit the configuration.
>
> 2. When a new version of the app is installed, the environment specific
> configuration isn't lost.
>
> If you want to remove the old configuration, undeploy the app first
> which will remove the old configuration file.

A an aside, wouldn't it be nice if it were configurable whether tomcat copies
the context.xml to $CATALINA_BASE/conf?  Then administrators could decide to
never have local configuration and always rely on the config within the war?

> Mark

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

Rainer Frey (Inxmail GmbH)
On Monday 20 July 2009 17:08:15 Mike Frohme wrote:

> > > >> Edit the copy of the context.xml file and all will work as you
> > > >> expect.
> > >
> > > 1. In production, the operations folks don't have to unpack the app,
> > > edit the context file and re-pack the app to edit the configuration.
> > >
> > > 2. When a new version of the app is installed, the environment specific
> > > configuration isn't lost.
> > >
> > > If you want to remove the old configuration, undeploy the app first
> > > which will remove the old configuration file.
> >
> > A an aside, wouldn't it be nice if it were configurable whether tomcat
> > copies the context.xml to $CATALINA_BASE/conf?  Then administrators could
> > decide to never have local configuration and always rely on the config
> > within the war?
> Sorry for the late reply, Rainer.
>
> There is, in principle.  Set deployXML to false in the Host declaration in
> your server.xml and it will do exactly what you want.  On the flip side,
> tomcat will remove the configuration when the app is undeployed, so you
> need a little care in your deployment process.

Thanks for the response. Actually, doesn't this do the exact oposite of what I
want?

What I want (as option): "I know that developer/packager did it right and I
never want to have local configuration. Always use the context.xml within the
currently deployed application, updated every time I redeploy the app."

deployXML=false seems to do: "Never trust the developer, don't even copy their
context configuration to local configuration if there is no local one yet.
Only use a configuration I manually put on the server".

Could anyone please comment whether I understand that right?

> Mike

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Context.xml not updating dataSource

markt
Rainer Frey wrote:

> On Monday 20 July 2009 17:08:15 Mike Frohme wrote:
>
>>>>>> Edit the copy of the context.xml file and all will work as you
>>>>>> expect.
>>>> 1. In production, the operations folks don't have to unpack the app,
>>>> edit the context file and re-pack the app to edit the configuration.
>>>>
>>>> 2. When a new version of the app is installed, the environment specific
>>>> configuration isn't lost.
>>>>
>>>> If you want to remove the old configuration, undeploy the app first
>>>> which will remove the old configuration file.
>>> A an aside, wouldn't it be nice if it were configurable whether tomcat
>>> copies the context.xml to $CATALINA_BASE/conf?  Then administrators could
>>> decide to never have local configuration and always rely on the config
>>> within the war?
>> Sorry for the late reply, Rainer.
>>
>> There is, in principle.  Set deployXML to false in the Host declaration in
>> your server.xml and it will do exactly what you want.  On the flip side,
>> tomcat will remove the configuration when the app is undeployed, so you
>> need a little care in your deployment process.
>
> Thanks for the response. Actually, doesn't this do the exact oposite of what I
> want?
>
> What I want (as option): "I know that developer/packager did it right and I
> never want to have local configuration. Always use the context.xml within the
> currently deployed application, updated every time I redeploy the app."
>
> deployXML=false seems to do: "Never trust the developer, don't even copy their
> context configuration to local configuration if there is no local one yet.
> Only use a configuration I manually put on the server".
>
> Could anyone please comment whether I understand that right?

You do. In which case, undeploy your application before you deploy the new
version and Tomcat will remove the copied context.xml as part of the undeployment.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: Context.xml not updating dataSource

Mike Frohme
In reply to this post by Rainer Frey (Inxmail GmbH)
Sorry, Rainer - I didn't read your msg carefully, and Mark's word is right on.

Others will clarify, but as I understand it ...

The default Host attribute is deployXML "true" which means that the context.xml is deployed to conf/[engine]/[host]/appname.xml on application deployment, and undeployed appropriately.   Mark's comment to "undeploy your application before you deploy the new version and Tomcat will remove the copied context.xml as part of the undeployment." is important - you may find that you are using an old context.xml if the app is not undeployed cleanly - that may have led to your original comment, I don't recall.

If deployXML is "false", your infrastructure team, or container/instance owner is responsible for maintaining resource contexts on applications' behalf - the case where backend security is a little more an issue, or "the developer doesn't really know best".  Undeploying the application in this case *removes* the conf/[engine]/[host]/appname.xml, requiring manual/process intervention to restore it.

Apologies for the confusion.
--
Mike

-----Original Message-----
From: Rainer Frey [mailto:[hidden email]]
Sent: Tuesday, July 21, 2009 2:40 AM
To: Tomcat Users List
Subject: Re: Context.xml not updating dataSource

On Monday 20 July 2009 17:08:15 Mike Frohme wrote:

> > > >> Edit the copy of the context.xml file and all will work as you
> > > >> expect.
> > >
> > > 1. In production, the operations folks don't have to unpack the app,
> > > edit the context file and re-pack the app to edit the configuration.
> > >
> > > 2. When a new version of the app is installed, the environment specific
> > > configuration isn't lost.
> > >
> > > If you want to remove the old configuration, undeploy the app first
> > > which will remove the old configuration file.
> >
> > A an aside, wouldn't it be nice if it were configurable whether tomcat
> > copies the context.xml to $CATALINA_BASE/conf?  Then administrators could
> > decide to never have local configuration and always rely on the config
> > within the war?
> Sorry for the late reply, Rainer.
>
> There is, in principle.  Set deployXML to false in the Host declaration in
> your server.xml and it will do exactly what you want.  On the flip side,
> tomcat will remove the configuration when the app is undeployed, so you
> need a little care in your deployment process.

Thanks for the response. Actually, doesn't this do the exact oposite of what I
want?

What I want (as option): "I know that developer/packager did it right and I
never want to have local configuration. Always use the context.xml within the
currently deployed application, updated every time I redeploy the app."

deployXML=false seems to do: "Never trust the developer, don't even copy their
context configuration to local configuration if there is no local one yet.
Only use a configuration I manually put on the server".

Could anyone please comment whether I understand that right?

> Mike

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]