Hello Rob and Mark and others Thanks for your input.
> > 2. In /home/lib/dspace/apache-tomcat-9.0.12/conf/server.xml I added the > > following Resource > > > > <Resource name="jdbc/dspaceWeb" > > factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" > > type="javax.sql.DataSource" > > auth="Container" > > username="*****" > > password="******" > > driverClassName="org.postgresql.Driver" > > url="jdbc:postgresql://localhost:5432/dspace" > > initialSize="5" > > maxTotal="50" > > maxIdle="15" > > minIdle="5" /> > > Exactly where in server.xml did you put this? What element was it nested > under? I should have made clear, it's nested under <GlobalNamingResources> which is in turn nested under <Server>. I have removed the factory attribute and it now reads: <GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> <Resource name="jdbc/dspaceWeb" type="javax.sql.DataSource" auth="Container" username="*******" password="*******" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/dspace" initialSize="5" maxTotal="50" maxIdle="15" minIdle="5" /> </GlobalNamingResources> > > 3. Created a context.xml in /dspace/webapps/xmlui/META-INF/ > > I think this is the problem. That location looks to be outside of the > default appBase. If I'm right, there is already a Context element > defined for this web application somewhere else. You need to find that > Context definition and add the ResourceLink to it. Right. It is indeed possible that the underlying configuration is not set up correctly. This is the relevant extract from server.xml: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="/solr" docBase="/dspace/webapps/solr"/> </Host> <Host name="********" appBase="/dspace/webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="" docBase="/dspace/webapps/xmlui"/> <Context path="/rest" docBase="/dspace/webapps/rest" /> <Context path="/oai" docBase="/dspace/webapps/oai" /> </Host> Host appBase for the domain earlier said "webapps", like it still does for localhost, but I changed to "dspace/webapps". No change when I restart Tomcat. Under /home/lib/dspace/apache-tomcat-9.0.12/conf/Catalina there are folders for the hosts that have been set up on the server but none of them contain files. I am not sure where to look elsewhere for this Context element. Any ideas? Hrafn On Thu, Nov 26, 2020 at 9:30 PM Mark Thomas <ma...@apache.org> wrote: > On 26/11/2020 19:57, Hrafn Malmquist wrote: > > <snip/> > > > I am running: > > > > CentOS Linux release 7.8.2003 > > Tomcat 9.0.12 > > PostgreSQL 9.5.23 > > openjdk version "1.8.0_262" > > OpenJDK Runtime Environment (build 1.8.0_262-b10) > > There are good reasons to update to a more recent Tomcat 9 release but > I'm not aware of any fixes that would impact the specific issue you are > currently seeing. > > > 1. I downloaded postgresql-42.2.18.jar from > > https://jdbc.postgresql.org/download/postgresql-42.2.18.jar and > placed > > it in /home/lib/dspace/apache-tomcat-9.0.12/lib > > OK. That looks good. > > > 2. In /home/lib/dspace/apache-tomcat-9.0.12/conf/server.xml I added > the > > following Resource > > > > <Resource name="jdbc/dspaceWeb" > > factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" > > type="javax.sql.DataSource" > > auth="Container" > > username="*****" > > password="******" > > driverClassName="org.postgresql.Driver" > > url="jdbc:postgresql://localhost:5432/dspace" > > initialSize="5" > > maxTotal="50" > > maxIdle="15" > > minIdle="5" /> > > Exactly where in server.xml did you put this? What element was it nested > under? > > > There are a couple of issues that confuse me: > > a) the official documentation about JNDI datasource examples [0] says > "*This > > author has not had success here, although others have reported so. > > Clarification would be appreciated here." *in the section about > > Postgres. In other words, we can't be sure this works? > > That text needs to be removed. The author clearly made an error in their > config. This definitely works. > > > b) in the official documtation about JDBC connection pool it says that > > if you want to define a JDBC connection pool in the Apache Container > (which > > I understand to be trying to do) you have to specify the factory > attribute > > and set the value to org.apache.tomcat.jdbc.pool.DataSourceFactory [1] > > Do you want to use Tomcat's jdbc-pool? If so leave the factory attribute > as is. If you want to use Tomcat's built in copy for Apache Commons > DBCP2, remove the factory attribute. > > Personally, I'd go with DBCP2 but either should work. > > > 3. Created a context.xml in /dspace/webapps/xmlui/META-INF/ > > I think this is the problem. That location looks to be outside of the > default appBase. If I'm right, there is already a Context element > defined for this web application somewhere else. You need to find that > Context definition and add the ResourceLink to it. > > > > > <Context docBase="/dspace/webapps/xmlui">> <ResourceLink > name="jdbc/dspace" > > global="jdbc/dspaceWeb" > > type="javax.sql.DataSource" > > /> > > </Context> > > Mark > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >