You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2005/11/07 09:13:00 UTC
svn commit: r331239 [1/2] - in /geronimo/trunk:
applications/console-core/src/java/org/apache/geronimo/console/util/
applications/console-ear/src/plan/
applications/console-framework/src/webapp/WEB-INF/data/
applications/console-standard/ applications/...
Author: ammulder
Date: Mon Nov 7 00:12:29 2005
New Revision: 331239
URL: http://svn.apache.org/viewcvs?rev=331239&view=rev
Log:
Revised database pool portlet with more of a wizard-style interface
and using the management API and JSR-88 for configuration and
deployment. GERONIMO-1138.
Add repositories and JSR-88 to the management API.
Use a fancier repository rather than direct filesystem access
to deal with database driver JARs, etc.
Reduce per-web-page logging a bit.
Added:
geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/
geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabaseInfo.java (with props)
geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java (with props)
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/basicParams.jsp (with props)
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/confirmURL.jsp (with props)
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/edit.jsp (with props)
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/list.jsp (with props)
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/selectDatabase.jsp (with props)
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/testConnection.jsp (with props)
geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/jmx/LocalDeploymentManager.java (with props)
geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/jmx/RemoteDeploymentManager.java (with props)
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/repository/ListableRepository.java (with props)
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/repository/WriteableRepository.java (with props)
geronimo/trunk/modules/management/src/java/org/apache/geronimo/management/geronimo/JCAManagedConnectionFactory.java (with props)
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/repository/FileSystemRepository.java (with props)
Modified:
geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java
geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java
geronimo/trunk/applications/console-ear/src/plan/geronimo-application.xml
geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml
geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml
geronimo/trunk/applications/console-standard/project.xml
geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml
geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/web.xml
geronimo/trunk/modules/assembly/project.xml
geronimo/trunk/modules/assembly/src/plan/system-plan.xml
geronimo/trunk/modules/assembly/src/plan/webconsole-jetty-plan.xml
geronimo/trunk/modules/assembly/src/plan/webconsole-tomcat-plan.xml
geronimo/trunk/modules/assembly/src/var/log/server-log4j.properties
geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/RARConfigurer.java
geronimo/trunk/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/RAR_1_5DConfigBeanTest.java
geronimo/trunk/modules/connector/src/java/org/apache/geronimo/connector/JCAResourceImpl.java
geronimo/trunk/modules/connector/src/java/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapper.java
geronimo/trunk/modules/connector/src/java/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapperGBean.java
geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/factories/DeploymentFactoryImpl.java
geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java
geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/J2EEServerImpl.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/repository/Repository.java
geronimo/trunk/modules/management/src/java/org/apache/geronimo/management/geronimo/J2EEServer.java
Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java (original)
+++ geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java Mon Nov 7 00:12:29 2005
@@ -22,7 +22,6 @@
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
-import org.apache.geronimo.management.geronimo.*;
import org.apache.geronimo.management.J2EEDomain;
import org.apache.geronimo.management.J2EEDeployedObject;
import org.apache.geronimo.management.AppClientModule;
@@ -40,11 +39,24 @@
import org.apache.geronimo.management.JDBCDataSource;
import org.apache.geronimo.management.JDBCDriver;
import org.apache.geronimo.management.JCAConnectionFactory;
-import org.apache.geronimo.management.JCAManagedConnectionFactory;
+import org.apache.geronimo.management.geronimo.J2EEServer;
+import org.apache.geronimo.management.geronimo.J2EEApplication;
+import org.apache.geronimo.management.geronimo.JVM;
+import org.apache.geronimo.management.geronimo.WebContainer;
+import org.apache.geronimo.management.geronimo.WebConnector;
+import org.apache.geronimo.management.geronimo.WebManager;
+import org.apache.geronimo.management.geronimo.WebAccessLog;
+import org.apache.geronimo.management.geronimo.EJBManager;
+import org.apache.geronimo.management.geronimo.EJBConnector;
+import org.apache.geronimo.management.geronimo.JMSManager;
+import org.apache.geronimo.management.geronimo.JMSBroker;
+import org.apache.geronimo.management.geronimo.JMSConnector;
+import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory;
import org.apache.geronimo.j2ee.management.impl.Util;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.repository.Repository;
import org.apache.geronimo.kernel.proxy.ProxyManager;
import org.apache.geronimo.system.logging.SystemLog;
import org.apache.geronimo.pool.GeronimoExecutor;
@@ -192,6 +204,89 @@
return (ResourceAdapterModule[]) list.toArray(new ResourceAdapterModule[list.size()]);
}
+ public JCAManagedConnectionFactory[] getOutboundFactories(J2EEServer server, String connectionFactoryInterface) {
+ List list = new ArrayList();
+ try {
+ String[] names = server.getDeployedObjects();
+ for (int i = 0; i < names.length; i++) {
+ ObjectName name = ObjectName.getInstance(names[i]);
+ String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
+ if(type.equals(NameFactory.RESOURCE_ADAPTER_MODULE)) {
+ ResourceAdapterModule module = (ResourceAdapterModule) pm.createProxy(name, KernelManagementHelper.class.getClassLoader());
+ ResourceAdapter[] adapters = getResourceAdapters(module);
+ for (int j = 0; j < adapters.length; j++) {
+ ResourceAdapter adapter = adapters[j];
+ JCAResource[] resources = getRAResources(adapter);
+ for (int k = 0; k < resources.length; k++) {
+ JCAResource resource = resources[k];
+ JCAConnectionFactory[] factories = getConnectionFactories(resource);
+ for (int l = 0; l < factories.length; l++) {
+ JCAConnectionFactory factory = factories[l];
+ JCAManagedConnectionFactory mcf = getManagedConnectionFactory(factory);
+ if(mcf.getConnectionFactoryInterface().equals(connectionFactoryInterface)) {
+ list.add(mcf);
+ continue;
+ }
+ for (int m = 0; m < mcf.getImplementedInterfaces().length; m++) {
+ String iface = mcf.getImplementedInterfaces()[m];
+ if(iface.equals(connectionFactoryInterface)) {
+ list.add(mcf);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("Unable to look up related GBean", e);
+ }
+ return (JCAManagedConnectionFactory[]) list.toArray(new JCAManagedConnectionFactory[list.size()]);
+ }
+
+ public ResourceAdapterModule[] getOutboundRAModules(J2EEServer server, String connectionFactoryInterface) {
+ List list = new ArrayList();
+ try {
+ String[] names = server.getDeployedObjects();
+ for (int i = 0; i < names.length; i++) {
+ ObjectName name = ObjectName.getInstance(names[i]);
+ String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
+ if(type.equals(NameFactory.RESOURCE_ADAPTER_MODULE)) {
+ ResourceAdapterModule module = (ResourceAdapterModule) pm.createProxy(name, KernelManagementHelper.class.getClassLoader());
+ ResourceAdapter[] adapters = getResourceAdapters(module);
+ outer:
+ for (int j = 0; j < adapters.length; j++) {
+ ResourceAdapter adapter = adapters[j];
+ JCAResource[] resources = getRAResources(adapter);
+ for (int k = 0; k < resources.length; k++) {
+ JCAResource resource = resources[k];
+ JCAConnectionFactory[] factories = getConnectionFactories(resource);
+ for (int l = 0; l < factories.length; l++) {
+ JCAConnectionFactory factory = factories[l];
+ JCAManagedConnectionFactory mcf = getManagedConnectionFactory(factory);
+ if(mcf.getConnectionFactoryInterface().equals(connectionFactoryInterface)) {
+ list.add(module);
+ break outer;
+ }
+ for (int m = 0; m < mcf.getImplementedInterfaces().length; m++) {
+ String iface = mcf.getImplementedInterfaces()[m];
+ if(iface.equals(connectionFactoryInterface)) {
+ list.add(module);
+ break outer;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("Unable to look up related GBean", e);
+ }
+ return (ResourceAdapterModule[]) list.toArray(new ResourceAdapterModule[list.size()]);
+ }
+
public J2EEResource[] getResources(J2EEServer server) {
J2EEResource[] result = new J2EEResource[0];
try {
@@ -237,7 +332,20 @@
result = new JVM[temp.length];
System.arraycopy(temp, 0, result, 0, temp.length);
} catch (Exception e) {
- log.error("Unable to look up related GBean", e);
+ log.error("Unable to look up JVMs for J2EEServer", e);
+ }
+ return result;
+ }
+
+ public Repository[] getRepositories(J2EEServer server) {
+ Repository[] result = new Repository[0];
+ try {
+ String[] names = server.getRepositories();
+ Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+ result = new Repository[temp.length];
+ System.arraycopy(temp, 0, result, 0, temp.length);
+ } catch (Exception e) {
+ log.error("Unable to look up repositories for J2EEServer", e);
}
return result;
}
@@ -250,7 +358,7 @@
result = new WebManager[temp.length];
System.arraycopy(temp, 0, result, 0, temp.length);
} catch (Exception e) {
- log.error("Unable to look up related GBean", e);
+ log.error("Unable to look up WebManagers for J2EEServer", e);
}
return result;
}
@@ -623,13 +731,31 @@
return new Servlet[0]; //todo
}
- public ResourceAdapter getResourceAdapters(ResourceAdapterModule module) {
- return null; //todo
+ public ResourceAdapter[] getResourceAdapters(ResourceAdapterModule module) {
+ ResourceAdapter[] result = new ResourceAdapter[0];
+ try {
+ String[] names = module.getResourceAdapters();
+ Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+ result = new ResourceAdapter[temp.length];
+ System.arraycopy(temp, 0, result, 0, temp.length);
+ } catch (Exception e) {
+ log.error("Unable to look up resource adapters for module", e);
+ }
+ return result;
}
// resource adapter properties
public JCAResource[] getRAResources(ResourceAdapter adapter) {
- return new JCAResource[0]; //todo
+ JCAResource[] result = new JCAResource[0];
+ try {
+ String[] names = adapter.getJCAResources();
+ Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+ result = new JCAResource[temp.length];
+ System.arraycopy(temp, 0, result, 0, temp.length);
+ } catch (Exception e) {
+ log.error("Unable to look up JCA resources for resource adapter", e);
+ }
+ return result;
}
// resource properties
@@ -642,11 +768,26 @@
}
public JCAConnectionFactory[] getConnectionFactories(JCAResource resource) {
- return new JCAConnectionFactory[0]; //todo
+ JCAConnectionFactory[] result = new JCAConnectionFactory[0];
+ try {
+ String[] names = resource.getConnectionFactories();
+ Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+ result = new JCAConnectionFactory[temp.length];
+ System.arraycopy(temp, 0, result, 0, temp.length);
+ } catch (Exception e) {
+ log.error("Unable to look up connection factories for JCA resource", e);
+ }
+ return result;
}
public JCAManagedConnectionFactory getManagedConnectionFactory(JCAConnectionFactory factory) {
- return null; //todo
+ try {
+ String name = factory.getManagedConnectionFactory();
+ return (JCAManagedConnectionFactory) pm.createProxy(ObjectName.getInstance(name), KernelManagementHelper.class.getClassLoader());
+ } catch (Exception e) {
+ log.error("Unable to look up managed connection factory for connection factory", e);
+ return null;
+ }
}
public Object getObject(String objectName) {
Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java (original)
+++ geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java Mon Nov 7 00:12:29 2005
@@ -30,13 +30,13 @@
import org.apache.geronimo.management.JDBCDataSource;
import org.apache.geronimo.management.JDBCDriver;
import org.apache.geronimo.management.JCAConnectionFactory;
-import org.apache.geronimo.management.JCAManagedConnectionFactory;
import org.apache.geronimo.management.EJB;
import org.apache.geronimo.management.Servlet;
import org.apache.geronimo.management.ResourceAdapter;
import org.apache.geronimo.management.geronimo.*;
import org.apache.geronimo.system.logging.SystemLog;
import org.apache.geronimo.pool.GeronimoExecutor;
+import org.apache.geronimo.kernel.repository.Repository;
/**
* A helper interface to navigate between management objects. This is not
@@ -59,11 +59,14 @@
WebModule[] getWebModules(J2EEServer server);
EJBModule[] getEJBModules(J2EEServer server);
ResourceAdapterModule[] getRAModules(J2EEServer server);
+ ResourceAdapterModule[] getOutboundRAModules(J2EEServer server, String connectionFactoryInterface);
+ JCAManagedConnectionFactory[] getOutboundFactories(J2EEServer server, String connectionFactoryInterface);
J2EEResource[] getResources(J2EEServer server);
JCAResource[] getJCAResources(J2EEServer server);
JDBCResource[] getJDBCResources(J2EEServer server);
JMSResource[] getJMSResources(J2EEServer server);
JVM[] getJavaVMs(J2EEServer server);
+ Repository[] getRepositories(J2EEServer server);
WebManager[] getWebManagers(J2EEServer server);
WebAccessLog getWebAccessLog(WebManager manager, WebContainer container);
WebAccessLog getWebAccessLog(WebManager manager, String containerObjectName);
@@ -108,7 +111,7 @@
// module properties
EJB[] getEJBs(EJBModule module);
Servlet[] getServlets(WebModule module);
- ResourceAdapter getResourceAdapters(ResourceAdapterModule module);
+ ResourceAdapter[] getResourceAdapters(ResourceAdapterModule module);
// resource adapter properties
JCAResource[] getRAResources(ResourceAdapter adapter);
Modified: geronimo/trunk/applications/console-ear/src/plan/geronimo-application.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-ear/src/plan/geronimo-application.xml?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-ear/src/plan/geronimo-application.xml (original)
+++ geronimo/trunk/applications/console-ear/src/plan/geronimo-application.xml Mon Nov 7 00:12:29 2005
@@ -20,6 +20,47 @@
<artifactId>geronimo-console-core</artifactId>
<version>${geronimo_version}</version>
</dependency>
+ <!-- The following are for configuration and deployment via JSR-88 -->
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-test-ddbean</artifactId>
+ <version>${geronimo_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-deploy-jsr88</artifactId>
+ <version>${geronimo_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-deploy-config</artifactId>
+ <version>${geronimo_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-service-builder</artifactId>
+ <version>${geronimo_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-connector-builder</artifactId>
+ <version>${geronimo_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-j2ee-schema</artifactId>
+ <version>${geronimo_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>xmlbeans</groupId>
+ <artifactId>xbean</artifactId>
+ <version>${xmlbeans_version}</version>
+ </dependency>
+ <dependency>
+ <groupId>stax</groupId>
+ <artifactId>stax-api</artifactId>
+ <version>${stax_api_version}</version>
+ </dependency>
<!-- Keystore dependency -->
<dependency>
Modified: geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml (original)
+++ geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml Mon Nov 7 00:12:29 2005
@@ -230,6 +230,21 @@
</fragment>
</fragment>
+ <fragment name="oldjdbc" type="page">
+ <navigation>
+ <title>Old DB Pools</title>
+ <description>Manage database connections</description>
+ </navigation>
+
+ <fragment name="row1" type="row">
+ <fragment name="col1" type="column">
+ <fragment name="p1" type="portlet">
+ <property name="portlet" value="5.2"/>
+ </fragment>
+ </fragment>
+ </fragment>
+ </fragment>
+
<fragment name="jdbc" type="page">
<navigation>
<title>Database Pools</title>
@@ -239,7 +254,7 @@
<fragment name="row1" type="row">
<fragment name="col1" type="column">
<fragment name="p1" type="portlet">
- <property name="portlet" value="5.2"/>
+ <property name="portlet" value="5.65"/>
</fragment>
</fragment>
</fragment>
Modified: geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml (original)
+++ geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml Mon Nov 7 00:12:29 2005
@@ -130,5 +130,8 @@
<portlet id="64">
<definition-id>console-standard.JMSConnectorManager</definition-id>
</portlet>
+ <portlet id="65">
+ <definition-id>console-standard.DBWizard</definition-id>
+ </portlet>
</application>
</portlet-entity-registry>
Modified: geronimo/trunk/applications/console-standard/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/project.xml?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/project.xml (original)
+++ geronimo/trunk/applications/console-standard/project.xml Mon Nov 7 00:12:29 2005
@@ -80,6 +80,21 @@
<artifactId>geronimo-system</artifactId>
<version>${pom.currentVersion}</version>
</dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-deploy-jsr88</artifactId>
+ <version>${pom.currentVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-test-ddbean</artifactId>
+ <version>${pom.currentVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-connector-builder</artifactId>
+ <version>${pom.currentVersion}</version>
+ </dependency>
<!-- <dependency>
<groupId>geronimo</groupId>
<artifactId>geronimo-</artifactId>
Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabaseInfo.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabaseInfo.java?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabaseInfo.java (added)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabaseInfo.java Mon Nov 7 00:12:29 2005
@@ -0,0 +1,103 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.console.databasemanager.wizard;
+
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public class DatabaseInfo {
+ public static final DatabaseInfo[] ALL_DATABASES = new DatabaseInfo[]{
+ new DatabaseInfo("DaffodilDB Embedded","jdbc:daffodilDB_embedded:<database>","in.co.daffodil.db.jdbc.DaffodilDBDriver"),
+ new DatabaseInfo("DaffodilDB Server","jdbc:daffodilDB://<host>:<port>/<database>","in.co.daffodil.db.rmi.RmiDaffodilDBDriver", 3456),
+ new DatabaseInfo("DB2","jdbc:db2://<host>:<port>/<database>","com.ibm.db2.jcc.DB2Driver", 50000),
+ new DatabaseInfo("DB2 (DataDirect)","jdbc:datadirect:db2://<host>:<port>;DatabaseName=<database>","com.ddtek.jdbc.db2.DB2Driver", 50000),
+ new DatabaseInfo("FrontBase","jdbc:FrontBase://<host>:<port>/<database>","com.frontbase.jdbc.FBJDriver"),
+ new DatabaseInfo("HSQLDB embedded","jdbc:hsqldb:<database>","org.hsqldb.jdbcDriver"),
+ new DatabaseInfo("HSQLDB server","jdbc:hsqldb:hsql://<host>:<port>/<database>","org.hsqldb.jdbcDriver"),
+ new DatabaseInfo("Informix","jdbc:informix-sqli://<host>:<port>/<database>:informixserver=<dbservername>","com.informix.jdbc.IfxDriver"),
+ new DatabaseInfo("Informix (DataDirect)","jdbc:datadirect:informix://<host>:<port>;informixServer=<dbservername>;DatabaseName=<database>","com.ddtek.jdbc.informix.InformixDriver"),
+ new DatabaseInfo("InterSystems Cache","jdbc:Cache://<host>:<port>/<namespace>","com.intersys.jdbc.CacheDriver"),
+ new DatabaseInfo("JDataStore","jdbc:borland:dslocal:<file>","com.borland.datastore.jdbc.DataStoreDriver"),
+ new DatabaseInfo("JDBC/ODBC Bridge","jdbc:odbc:<datasource>","sun.jdbc.odbc.JdbcOdbcDriver"),
+ new DatabaseInfo("McKoi","jdbc:mckoi://<host>/","com.mckoi.JDBCDriver"),
+ new DatabaseInfo("Mimer","jdbc:mimer://<host>:<port>/<database>","com.mimer.jdbc.Driver"),
+ new DatabaseInfo("MySQL","jdbc:mysql://<host>:<port>/<database>","com.mysql.jdbc.Driver", 3306),
+ new DatabaseInfo("Oracle Thin","jdbc:oracle:thin:@<host>:<port>:<sid>","oracle.jdbc.OracleDriver", 1521),
+ new DatabaseInfo("Oracle OCI","jdbc:oracle:oci:@<host>:<port>:<sid>","oracle.jdbc.OracleDriver", 1521),
+ new DatabaseInfo("Oracle (DataDirect)","jdbc:datadirect:oracle://<host>:<port>;ServiceName=<sid>","com.ddtek.jdbc.oracle.OracleDriver", 1521),
+ new DatabaseInfo("Pervasive","jdbc:pervasive://<host>:<port>/<database>","com.pervasive.jdbc.v2.Driver"),
+ new DatabaseInfo("Pointbase server","jdbc:pointbase:server://<host>:<port>/<database>","com.pointbase.jdbc.jdbcUniversalDriver"),
+ new DatabaseInfo("PostgreSQL","jdbc:postgresql://<host>:<port>/<database>","org.postgresql.Driver", 5432),
+ new DatabaseInfo("Progress","jdbc:jdbcProgress:T:<host>:<port>:<database>","com.progress.sql.jdbc.JdbcProgressDriver"),
+ new DatabaseInfo("MaxDB","jdbc:sapdb://<host>:<port>/<database>","com.sap.dbtech.jdbc.DriverSapDB"),
+ new DatabaseInfo("SQL Server","jdbc:microsoft:sqlserver://<host>:<port>;DatabaseName=<database>","com.microsoft.jdbc.sqlserver.SQLServerDriver", 1433),
+ new DatabaseInfo("SQL Server (jTDS)","jdbc:jtds:sqlserver://<host>:<port>;DatabaseName=<database>","net.sourceforge.jtds.jdbc.Driver", 1433),
+ new DatabaseInfo("SQL Server (DataDirect)","jdbc:datadirect:sqlserver://<host>:<port>;DatabaseName=<database>","com.ddtek.jdbc.sqlserver.SQLServerDriver", 1433),
+ new DatabaseInfo("Sybase ASE","jdbc:sybase:Tds:<host>:<port>/<database>","com.sybase.jdbc3.jdbc.SybDriver", 2048),
+ new DatabaseInfo("Sybase ASA","jdbc:sybase:Tds:<host>:<port>/<database>","com.sybase.jdbc3.jdbc.SybDriver", 2638),
+ new DatabaseInfo("Sybase (DataDirect)","jdbc:datadirect:sybase://<host>:<port>;DatabaseName=<database>","com.ddtek.jdbc.sybase.SybaseDriver"),
+ };
+ private final static Pattern PARAM_PATTERN = Pattern.compile("<.+?>");
+
+ private String name;
+ private String url;
+ private String driverClass;
+ private int defaultPort;
+
+ public DatabaseInfo(String name, String url, String driverClass) {
+ this.name = name;
+ this.url = url;
+ this.driverClass = driverClass;
+ }
+
+ public DatabaseInfo(String name, String url, String driverClass, int defaultPort) {
+ this.name = name;
+ this.url = url;
+ this.driverClass = driverClass;
+ this.defaultPort = defaultPort;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public String getDriverClass() {
+ return driverClass;
+ }
+
+ public int getDefaultPort() {
+ return defaultPort;
+ }
+
+ public String[] getUrlParameters() {
+ Matcher m = PARAM_PATTERN.matcher(url);
+ List list = new ArrayList();
+ while(m.find()) {
+ list.add(url.substring(m.start()+1, m.end()-1));
+ }
+ return (String[]) list.toArray(new String[list.size()]);
+ }
+}
Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabaseInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java (added)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java Mon Nov 7 00:12:29 2005
@@ -0,0 +1,692 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.console.databasemanager.wizard;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.File;
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Properties;
+import java.net.URISyntaxException;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.MalformedURLException;
+import java.sql.Driver;
+import java.sql.SQLException;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+import javax.portlet.PortletRequest;
+import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
+import javax.enterprise.deploy.spi.DeploymentManager;
+import javax.enterprise.deploy.spi.DeploymentConfiguration;
+import javax.enterprise.deploy.spi.Target;
+import javax.enterprise.deploy.spi.TargetModuleID;
+import javax.enterprise.deploy.spi.status.ProgressObject;
+import javax.enterprise.deploy.spi.exceptions.InvalidModuleException;
+import javax.enterprise.deploy.model.exceptions.DDBeanCreateException;
+import javax.enterprise.deploy.model.DDBeanRoot;
+import org.apache.geronimo.console.BasePortlet;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.repository.ListableRepository;
+import org.apache.geronimo.kernel.repository.Repository;
+import org.apache.geronimo.deployment.tools.loader.ConnectorDeployable;
+import org.apache.geronimo.connector.deployment.jsr88.Connector15DCBRoot;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectorDCB;
+import org.apache.geronimo.connector.deployment.jsr88.Dependency;
+import org.apache.geronimo.connector.deployment.jsr88.ResourceAdapter;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectionDefinition;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectionDefinitionInstance;
+import org.apache.geronimo.connector.deployment.jsr88.ConfigPropertySetting;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectionManager;
+import org.apache.geronimo.connector.deployment.jsr88.SinglePool;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $
+ */
+public class DatabasePoolPortlet extends BasePortlet {
+ /**
+ * todo: EVIL!!! Should be replaced with something, somehow!
+ */
+ private final static String TRANQL_RAR_NAME = "tranql/rars/tranql-connector-1.0.rar";
+
+ private final static Log log = LogFactory.getLog(DatabasePoolPortlet.class);
+ private static final String LIST_VIEW = "/WEB-INF/view/dbwizard/list.jsp";
+ private static final String EDIT_VIEW = "/WEB-INF/view/dbwizard/edit.jsp";
+ private static final String SELECT_RDBMS_VIEW = "/WEB-INF/view/dbwizard/selectDatabase.jsp";
+ private static final String BASIC_PARAMS_VIEW = "/WEB-INF/view/dbwizard/basicParams.jsp";
+ private static final String CONFIRM_URL_VIEW = "/WEB-INF/view/dbwizard/confirmURL.jsp";
+ private static final String TEST_CONNECTION_VIEW = "/WEB-INF/view/dbwizard/testConnection.jsp";
+ private static final String LIST_MODE = "list";
+ private static final String EDIT_MODE = "edit";
+ private static final String SELECT_RDBMS_MODE = "rdbms";
+ private static final String BASIC_PARAMS_MODE = "params";
+ private static final String CONFIRM_URL_MODE = "url";
+ private static final String TEST_CONNECTION_MODE = "test";
+ private static final String SAVE_MODE = "save";
+ private static final String MODE_KEY = "mode";
+
+ private PortletRequestDispatcher listView;
+ private PortletRequestDispatcher editView;
+ private PortletRequestDispatcher selectRDBMSView;
+ private PortletRequestDispatcher basicParamsView;
+ private PortletRequestDispatcher confirmURLView;
+ private PortletRequestDispatcher testConnectionView;
+
+ public void init(PortletConfig portletConfig) throws PortletException {
+ super.init(portletConfig);
+ listView = portletConfig.getPortletContext().getRequestDispatcher(LIST_VIEW);
+ editView = portletConfig.getPortletContext().getRequestDispatcher(EDIT_VIEW);
+ selectRDBMSView = portletConfig.getPortletContext().getRequestDispatcher(SELECT_RDBMS_VIEW);
+ basicParamsView = portletConfig.getPortletContext().getRequestDispatcher(BASIC_PARAMS_VIEW);
+ confirmURLView = portletConfig.getPortletContext().getRequestDispatcher(CONFIRM_URL_VIEW);
+ testConnectionView = portletConfig.getPortletContext().getRequestDispatcher(TEST_CONNECTION_VIEW);
+ }
+
+ public void destroy() {
+ listView = null;
+ editView = null;
+ selectRDBMSView = null;
+ basicParamsView = null;
+ confirmURLView = null;
+ testConnectionView = null;
+ super.destroy();
+ }
+
+ public void processAction(ActionRequest actionRequest,
+ ActionResponse actionResponse) throws PortletException, IOException {
+ String mode = actionRequest.getParameter(MODE_KEY);
+ PoolData data = new PoolData();
+ data.load(actionRequest);
+ if(mode.equals("process-"+SELECT_RDBMS_MODE)) {
+ if(data.getDbtype().equals("Other")) {
+ actionResponse.setRenderParameter(MODE_KEY, EDIT_MODE);
+ } else {
+ DatabaseInfo info = null;
+ info = getDatabaseInfo(data);
+ if(info != null) {
+ data.driverClass = info.getDriverClass();
+ data.urlPrototype = info.getUrl();
+ }
+ actionResponse.setRenderParameter(MODE_KEY, BASIC_PARAMS_MODE);
+ }
+ } else if(mode.equals("process-"+BASIC_PARAMS_MODE)) {
+ DatabaseInfo info = null;
+ info = getDatabaseInfo(data);
+ if(info != null) {
+ data.url = populateURL(info.getUrl(), info.getUrlParameters(), data.getProperties());
+ }
+ if(attemptDriverLoad(actionRequest, data) != null) {
+ actionResponse.setRenderParameter(MODE_KEY, CONFIRM_URL_MODE);
+ } else {
+ actionResponse.setRenderParameter("driverError", "Unable to load driver "+data.driverClass);
+ actionResponse.setRenderParameter(MODE_KEY, BASIC_PARAMS_MODE);
+ }
+ } else if(mode.equals("process-"+CONFIRM_URL_MODE)) {
+ String test = actionRequest.getParameter("test");
+ if(test == null || test.equals("true")) {
+ String result = null;
+ String stack = null;
+ try {
+ result = attemptConnect(actionRequest, data);
+ } catch (Exception e) {
+ StringWriter writer = new StringWriter();
+ PrintWriter temp = new PrintWriter(writer);
+ e.printStackTrace(temp);
+ temp.flush();
+ temp.close();
+ stack = writer.getBuffer().toString();
+ }
+ if(result != null) actionResponse.setRenderParameter("connectResult", result);
+ actionRequest.getPortletSession(true).setAttribute("connectError", stack);
+ actionResponse.setRenderParameter(MODE_KEY, TEST_CONNECTION_MODE);
+ } else {
+ save(actionRequest, data);
+ }
+ } else if(mode.equals(SAVE_MODE)) {
+ save(actionRequest, data);
+ } else {
+ actionResponse.setRenderParameter(MODE_KEY, mode);
+ }
+ data.store(actionResponse);
+ }
+
+ protected void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
+ if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+ return;
+ }
+ try {
+ String mode = renderRequest.getParameter(MODE_KEY);
+ PoolData data = new PoolData();
+ data.load(renderRequest);
+ renderRequest.setAttribute("pool", data);
+ if(mode == null || mode.equals("")) {
+ mode = LIST_MODE;
+ }
+ if(mode.equals(LIST_MODE)) {
+ renderList(renderRequest, renderResponse);
+ } else if(mode.equals(EDIT_MODE)) {
+ renderEdit(renderRequest, renderResponse);
+ } else if(mode.equals(SELECT_RDBMS_MODE)) {
+ renderSelectRDBMS(renderRequest, renderResponse);
+ } else if(mode.equals(BASIC_PARAMS_MODE)) {
+ renderBasicParams(renderRequest, renderResponse, data);
+ } else if(mode.equals(CONFIRM_URL_MODE)) {
+ renderConfirmURL(renderRequest, renderResponse);
+ } else if(mode.equals(TEST_CONNECTION_MODE)) {
+ renderTestConnection(renderRequest, renderResponse);
+ }
+ } catch (Throwable e) {
+ log.error("Unable to render portlet", e);
+ }
+ }
+
+ private void renderList(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
+ JCAManagedConnectionFactory[] databases = PortletManager.getOutboundFactories(renderRequest, "javax.sql.DataSource");
+ ConnectionPool[] pools = new ConnectionPool[databases.length];
+ for (int i = 0; i < databases.length; i++) {
+ JCAManagedConnectionFactory db = databases[i];
+ try {
+ ObjectName name = ObjectName.getInstance(db.getObjectName());
+ pools[i] = new ConnectionPool(name.getCanonicalName(), name.getKeyProperty(NameFactory.J2EE_NAME));
+ } catch (MalformedObjectNameException e) {
+ e.printStackTrace();
+ }
+ }
+ renderRequest.setAttribute("pools", pools);
+ listView.include(renderRequest, renderResponse);
+ }
+
+ private void renderEdit(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
+ editView.include(renderRequest, renderResponse);
+ }
+
+ private void renderSelectRDBMS(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
+ renderRequest.setAttribute("databases", DatabaseInfo.ALL_DATABASES);
+ selectRDBMSView.include(renderRequest, renderResponse);
+ }
+
+ private void renderBasicParams(RenderRequest renderRequest, RenderResponse renderResponse, PoolData data) throws IOException, PortletException {
+ // List the available JARs
+ List list = new ArrayList();
+ ListableRepository[] repos = PortletManager.getListableRepositories(renderRequest);
+ for (int i = 0; i < repos.length; i++) {
+ ListableRepository repo = repos[i];
+ try {
+ final URI[] uris = repo.listURIs();
+ final String[] strings = new String[uris.length];
+ for (int j = 0; j < strings.length; j++) {
+ strings[j] = uris[j].toString();
+ }
+ list.addAll(Arrays.asList(strings));
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ }
+ Collections.sort(list);
+ renderRequest.setAttribute("jars", list);
+ // Make sure all properties available for the DB are listed
+ DatabaseInfo info = getDatabaseInfo(data);
+ if(info != null) {
+ String[] params = info.getUrlParameters();
+ for (int i = 0; i < params.length; i++) {
+ String param = params[i];
+ final String key = "property-"+param;
+ if(!data.getProperties().containsKey(key)) {
+ data.getProperties().put(key, param.equals("port") && info.getDefaultPort() > 0 ? new Integer(info.getDefaultPort()) : null);
+ }
+ }
+ }
+ // Pass on errors
+ renderRequest.setAttribute("driverError", renderRequest.getParameter("driverError"));
+
+ basicParamsView.include(renderRequest, renderResponse);
+ }
+
+ private void renderConfirmURL(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
+ confirmURLView.include(renderRequest, renderResponse);
+ }
+
+ private void renderTestConnection(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
+ // Pass on results
+ renderRequest.setAttribute("connectResult", renderRequest.getParameter("connectResult"));
+ renderRequest.setAttribute("connectError", renderRequest.getPortletSession().getAttribute("connectError"));
+ testConnectionView.include(renderRequest, renderResponse);
+ }
+
+ private static String attemptConnect(PortletRequest request, PoolData data) throws SQLException, IllegalAccessException, InstantiationException {
+ Class driverClass = attemptDriverLoad(request, data);
+ Driver driver = (Driver) driverClass.newInstance();
+ if(driver.acceptsURL(data.url)) {
+ Properties props = new Properties();
+ props.put("user", data.user);
+ props.put("password", data.password);
+ Connection con = null;
+ try {
+ con = driver.connect(data.url, props);
+ final DatabaseMetaData metaData = con.getMetaData();
+ return metaData.getDatabaseProductName()+" "+metaData.getDatabaseProductVersion();
+ } finally {
+ if(con != null) try{con.close();}catch(SQLException e) {}
+ }
+ } else throw new SQLException("Driver "+data.getDriverClass()+" does not accept URL "+data.url);
+ }
+
+ private static void save(PortletRequest request, PoolData data) {
+ URL url = getTranQLRAR(request);
+ DeploymentManager mgr = PortletManager.getDeploymentManager(request);
+ try {
+ ConnectorDeployable deployable = new ConnectorDeployable(url);
+ DeploymentConfiguration config = mgr.createConfiguration(deployable);
+ final DDBeanRoot ddBeanRoot = deployable.getDDBeanRoot();
+ Connector15DCBRoot root = (Connector15DCBRoot) config.getDConfigBeanRoot(ddBeanRoot);
+ ConnectorDCB connector = (ConnectorDCB) root.getDConfigBean(ddBeanRoot.getChildBean(root.getXpaths()[0])[0]);
+ connector.setConfigID("DatabasePool"+data.getName());
+ connector.setParentID("org/apache/geronimo/Server");
+ if(data.jar1 != null && !data.jar1.equals("")) {
+ Dependency dep = new Dependency();
+ connector.setDependency(new Dependency[]{dep});
+ dep.setURI(data.jar1);
+ }
+ if(data.jar2 != null && !data.jar2.equals("")) {
+ Dependency dep = new Dependency();
+ Dependency[] old = connector.getDependency();
+ Dependency[] longer = new Dependency[old.length+1];
+ System.arraycopy(old, 0, longer, 0, old.length);
+ longer[old.length] = dep;
+ connector.setDependency(longer);
+ dep.setURI(data.jar2);
+ }
+ if(data.jar3 != null && !data.jar3.equals("")) {
+ Dependency dep = new Dependency();
+ Dependency[] old = connector.getDependency();
+ Dependency[] longer = new Dependency[old.length+1];
+ System.arraycopy(old, 0, longer, 0, old.length);
+ longer[old.length] = dep;
+ connector.setDependency(longer);
+ dep.setURI(data.jar3);
+ }
+ ResourceAdapter adapter = connector.getResourceAdapter()[0];
+ ConnectionDefinition definition = new ConnectionDefinition();
+ adapter.setConnectionDefinition(new ConnectionDefinition[]{definition});
+ definition.setConnectionFactoryInterface("javax.sql.DataSource");
+ ConnectionDefinitionInstance instance = new ConnectionDefinitionInstance();
+ definition.setConnectionInstance(new ConnectionDefinitionInstance[]{instance});
+ instance.setName(data.getName());
+ ConfigPropertySetting[] settings = instance.getConfigPropertySetting();
+ for (int i = 0; i < settings.length; i++) {
+ ConfigPropertySetting setting = settings[i];
+ if(setting.getName().equals("UserName")) {
+ setting.setValue(data.user);
+ } else if(setting.getName().equals("Password")) {
+ setting.setValue(data.password);
+ } else if(setting.getName().equals("ConnectionURL")) {
+ setting.setValue(data.url);
+ } else if(setting.getName().equals("Driver")) {
+ setting.setValue(data.driverClass);
+ }
+ }
+ ConnectionManager manager = instance.getConnectionManager();
+ manager.setTransactionLocal(true);
+ SinglePool pool = new SinglePool();
+ manager.setPoolSingle(pool);
+ pool.setMatchOne(true);
+ if(data.minSize != null && !data.minSize.equals("")) {
+ pool.setMinSize(new Integer(data.minSize));
+ }
+ if(data.maxSize != null && !data.maxSize.equals("")) {
+ pool.setMaxSize(new Integer(data.maxSize));
+ }
+ if(data.blockingTimeout != null && !data.blockingTimeout.equals("")) {
+ pool.setBlockingTimeoutMillis(new Integer(data.blockingTimeout));
+ }
+ if(data.idleTimeout != null && !data.idleTimeout.equals("")) {
+ pool.setIdleTimeoutMinutes(new Integer(data.idleTimeout));
+ }
+ File tempFile = File.createTempFile("console-deployment",".xml");
+ tempFile.deleteOnExit();
+ log.debug("Writing database pool deployment plan to "+tempFile.getAbsolutePath());
+ BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
+ config.save(out);
+ out.flush();
+ out.close();
+ Target[] targets = mgr.getTargets();
+ ProgressObject po = mgr.distribute(targets, new File(url.getPath()), tempFile);
+ waitForProgress(po);
+ if(po.getDeploymentStatus().isCompleted()) {
+ TargetModuleID[] ids = po.getResultTargetModuleIDs();
+ po = mgr.start(ids);
+ waitForProgress(po);
+ if(po.getDeploymentStatus().isCompleted()) {
+ System.out.println("Deployment completed successfully!");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if(mgr != null) mgr.release();
+ }
+ }
+
+ private static void waitForProgress(ProgressObject po) {
+ while(po.getDeploymentStatus().isRunning()) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * todo: This is not ideal... Should look up the RAR name somehow...
+ * Maybe eventually should not assume the RAR is on the local filesystem...
+ */
+ private static URL getTranQLRAR(PortletRequest request) {
+ try {
+ URI uri = new URI(TRANQL_RAR_NAME);
+ Repository[] repos = PortletManager.getRepositories(request);
+ for (int i = 0; i < repos.length; i++) {
+ Repository repo = repos[i];
+ URL url = repo.getURL(uri);
+ if(url != null && url.getProtocol().equals("file")) {
+ File file = new File(url.getPath());
+ if(file.exists() && file.canRead() && !file.isDirectory()) {
+ return url;
+ }
+ }
+ }
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * WARNING: This method relies on having access to the same repository
+ * URLs as the server uses.
+ */
+ private static Class attemptDriverLoad(PortletRequest request, PoolData data) {
+ List list = new ArrayList();
+ try {
+ URI one = new URI(data.getJar1());
+ URI two = new URI(data.getJar2());
+ URI three = new URI(data.getJar3());
+
+ ListableRepository[] repos = PortletManager.getListableRepositories(request);
+ for (int i = 0; i < repos.length; i++) {
+ ListableRepository repo = repos[i];
+ if(one != null) {
+ URL url = repo.getURL(one);
+ if(url != null) {
+ list.add(url);
+ one = null;
+ }
+ }
+ if(two != null) {
+ URL url = repo.getURL(two);
+ if(url != null) {
+ list.add(url);
+ two = null;
+ }
+ }
+ if(three != null) {
+ URL url = repo.getURL(three);
+ if(url != null) {
+ list.add(url);
+ three = null;
+ }
+ }
+ }
+ URLClassLoader loader = new URLClassLoader((URL[]) list.toArray(new URL[list.size()]), DatabasePoolPortlet.class.getClassLoader());
+ try {
+ return loader.loadClass(data.driverClass);
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ private static String populateURL(String url, String[] keys, Map properties) {
+ for (int i = 0; i < keys.length; i++) {
+ String key = keys[i];
+ String value = (String) properties.get("property-"+key);
+ if(value == null) {
+ int begin = url.indexOf("<"+key+">");
+ int end = begin + key.length() + 2;
+ for(int j=begin-1; j>=0; j--) {
+ char c = url.charAt(j);
+ if(c == ';' || c == ':') {
+ begin = j;
+ break;
+ } else if(c == '/') {
+ break;
+ }
+ }
+ url = url.substring(0, begin)+url.substring(end);
+ } else {
+ url = url.replaceAll("<"+key+">", value);
+ }
+ }
+ return url;
+ }
+
+ private static DatabaseInfo getDatabaseInfo(PoolData data) {
+ DatabaseInfo info = null;
+ for (int i = 0; i < DatabaseInfo.ALL_DATABASES.length; i++) {
+ DatabaseInfo next = DatabaseInfo.ALL_DATABASES[i];
+ if(next.getName().equals(data.getDbtype())) {
+ info = next;
+ break;
+ }
+ }
+ return info;
+ }
+
+ public static class PoolData implements Serializable {
+ private String name;
+ private String dbtype;
+ private String user;
+ private String password;
+ private Map properties = new HashMap();
+ private String driverClass;
+ private String url;
+ private String urlPrototype;
+ private String jar1;
+ private String jar2;
+ private String jar3;
+ private String minSize;
+ private String maxSize;
+ private String blockingTimeout;
+ private String idleTimeout;
+
+ public void load(PortletRequest request) {
+ name = request.getParameter("name");
+ driverClass = request.getParameter("driverClass");
+ dbtype = request.getParameter("dbtype");
+ user = request.getParameter("user");
+ password = request.getParameter("password");
+ url = request.getParameter("url");
+ urlPrototype = request.getParameter("urlPrototype");
+ jar1 = request.getParameter("jar1");
+ jar2 = request.getParameter("jar2");
+ jar3 = request.getParameter("jar3");
+ minSize = request.getParameter("minSize");
+ maxSize = request.getParameter("maxSize");
+ blockingTimeout = request.getParameter("blockingTimeout");
+ idleTimeout = request.getParameter("idleTimeout");
+ Map map = request.getParameterMap();
+ for (Iterator it = map.keySet().iterator(); it.hasNext();) {
+ String key = (String) it.next();
+ if(key.startsWith("property-")) {
+ properties.put(key, request.getParameter(key));
+ }
+ }
+ }
+
+ public void store(ActionResponse response) {
+ if(name != null) response.setRenderParameter("name", name);
+ if(dbtype != null) response.setRenderParameter("dbtype", dbtype);
+ if(driverClass != null) response.setRenderParameter("driverClass", driverClass);
+ if(user != null) response.setRenderParameter("user", user);
+ if(password != null) response.setRenderParameter("password", password);
+ if(url != null) response.setRenderParameter("urlPrototype", urlPrototype);
+ if(urlPrototype != null) response.setRenderParameter("url", url);
+ if(jar1 != null) response.setRenderParameter("jar1", jar1);
+ if(jar2 != null) response.setRenderParameter("jar2", jar2);
+ if(jar3 != null) response.setRenderParameter("jar3", jar3);
+ if(minSize != null) response.setRenderParameter("minSize", minSize);
+ if(maxSize != null) response.setRenderParameter("maxSize", maxSize);
+ if(blockingTimeout != null) response.setRenderParameter("blockingTimeout", blockingTimeout);
+ if(idleTimeout != null) response.setRenderParameter("idleTimeout", idleTimeout);
+ for (Iterator it = properties.entrySet().iterator(); it.hasNext();) {
+ Map.Entry entry = (Map.Entry) it.next();
+ if(entry.getValue() != null) {
+ response.setRenderParameter((String)entry.getKey(), (String)entry.getValue());
+ }
+ }
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDbtype() {
+ return dbtype;
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public Map getProperties() {
+ return properties;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public String getJar1() {
+ return jar1;
+ }
+
+ public String getJar2() {
+ return jar2;
+ }
+
+ public String getJar3() {
+ return jar3;
+ }
+
+ public String getMinSize() {
+ return minSize;
+ }
+
+ public String getMaxSize() {
+ return maxSize;
+ }
+
+ public String getBlockingTimeout() {
+ return blockingTimeout;
+ }
+
+ public String getIdleTimeout() {
+ return idleTimeout;
+ }
+
+ public String getDriverClass() {
+ return driverClass;
+ }
+
+ public String getUrlPrototype() {
+ return urlPrototype;
+ }
+
+ public String toString() {
+ String temp= "NAME="+name+"\n"+
+ "DB="+dbtype+"\n"+
+ "CLASS="+driverClass+"\n"+
+ "FORMAT="+urlPrototype+"\n"+
+ "URL="+url+"\n"+
+ "USER="+user+"\n"+
+ "PASS="+password+"\n"+
+ "JAR1="+jar1+"\n"+
+ "JAR2="+jar2+"\n"+
+ "JAR3="+jar3+"\n"+
+ "MIN="+minSize+"\n"+
+ "MAX="+maxSize+"\n"+
+ "BLOCK="+blockingTimeout+"\n"+
+ "IDLE="+idleTimeout;
+ for (Iterator it = properties.entrySet().iterator(); it.hasNext();) {
+ Map.Entry entry = (Map.Entry) it.next();
+ temp+="\n"+entry.getKey()+"="+entry.getValue();
+ }
+ return temp;
+ }
+ }
+
+ public static class ConnectionPool implements Serializable {
+ private String objectName;
+ private String name;
+
+ public ConnectionPool(String objectName, String name) {
+ this.objectName = objectName;
+ this.name = name;
+ }
+
+ public String getObjectName() {
+ return objectName;
+ }
+
+ public String getName() {
+ return name;
+ }
+ }
+}
Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java (original)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java Mon Nov 7 00:12:29 2005
@@ -16,18 +16,27 @@
*/
package org.apache.geronimo.console.util;
+import java.util.List;
+import java.util.ArrayList;
import javax.portlet.PortletRequest;
import javax.portlet.PortletSession;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpSession;
+import javax.enterprise.deploy.spi.DeploymentManager;
+import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException;
import org.apache.geronimo.kernel.KernelRegistry;
import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.repository.Repository;
+import org.apache.geronimo.kernel.repository.ListableRepository;
+import org.apache.geronimo.kernel.repository.WriteableRepository;
import org.apache.geronimo.kernel.proxy.GeronimoManagedBean;
import org.apache.geronimo.management.J2EEDomain;
+import org.apache.geronimo.management.ResourceAdapterModule;
import org.apache.geronimo.management.geronimo.*;
import org.apache.geronimo.system.logging.SystemLog;
import org.apache.geronimo.pool.GeronimoExecutor;
+import org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -60,6 +69,16 @@
return new KernelManagementHelper(kernel);
}
+ public static DeploymentManager getDeploymentManager(PortletRequest request) {
+ DeploymentFactoryImpl factory = new DeploymentFactoryImpl();
+ try {
+ return factory.getDeploymentManager("deployer:geronimo:inVM", null, null);
+ } catch (DeploymentManagerCreationException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
public static ManagementHelper getManagementHelper(PortletRequest request) {
ManagementHelper helper = (ManagementHelper) request.getPortletSession(true).getAttribute(HELPER_KEY, PortletSession.APPLICATION_SCOPE);
if(helper == null) {
@@ -109,6 +128,47 @@
request.getPortletSession().setAttribute(JVM_KEY, jvm, PortletSession.APPLICATION_SCOPE);
}
return jvm;
+ }
+
+ public static Repository[] getRepositories(PortletRequest request) {
+ ManagementHelper helper = getManagementHelper(request);
+ return helper.getRepositories(getCurrentServer(request));
+ }
+
+ public static ListableRepository[] getListableRepositories(PortletRequest request) {
+ ManagementHelper helper = getManagementHelper(request);
+ Repository[] list = helper.getRepositories(getCurrentServer(request));
+ List result = new ArrayList();
+ for (int i = 0; i < list.length; i++) {
+ Repository repository = list[i];
+ if(repository instanceof ListableRepository) {
+ result.add(repository);
+ }
+ }
+ return (ListableRepository[]) result.toArray(new ListableRepository[result.size()]);
+ }
+
+ public static WriteableRepository[] getWritableRepositories(PortletRequest request) {
+ ManagementHelper helper = getManagementHelper(request);
+ Repository[] list = helper.getRepositories(getCurrentServer(request));
+ List result = new ArrayList();
+ for (int i = 0; i < list.length; i++) {
+ Repository repository = list[i];
+ if(repository instanceof WriteableRepository) {
+ result.add(repository);
+ }
+ }
+ return (WriteableRepository[]) result.toArray(new WriteableRepository[result.size()]);
+ }
+
+ public static ResourceAdapterModule[] getOutboundRAModules(PortletRequest request, String iface) {
+ ManagementHelper helper = getManagementHelper(request);
+ return helper.getOutboundRAModules(getCurrentServer(request), iface);
+ }
+
+ public static JCAManagedConnectionFactory[] getOutboundFactories(PortletRequest request, String iface) {
+ ManagementHelper helper = getManagementHelper(request);
+ return helper.getOutboundFactories(getCurrentServer(request), iface);
}
public static String[] getWebManagerNames(PortletRequest request) {
Modified: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml?rev=331239&r1=331238&r2=331239&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml (original)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml Mon Nov 7 00:12:29 2005
@@ -483,6 +483,29 @@
</portlet>
<portlet>
+ <description>Wizard for managing database pools</description>
+ <portlet-name>DBWizard</portlet-name>
+ <display-name>Database Pool Wizard</display-name>
+
+ <portlet-class>org.apache.geronimo.console.databasemanager.wizard.DatabasePoolPortlet</portlet-class>
+
+ <expiration-cache>-1</expiration-cache>
+
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>VIEW</portlet-mode>
+ </supports>
+
+ <supported-locale>en</supported-locale>
+
+ <portlet-info>
+ <title>Database Pools</title>
+ <short-title>Database Pools</short-title>
+ <keywords>Database Pool Wizard</keywords>
+ </portlet-info>
+ </portlet>
+
+ <portlet>
<description>Portlet for managing JMS connections</description>
<portlet-name>JMSConnections</portlet-name>
<display-name>JMS Connection Factory Portlet</display-name>
Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/basicParams.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/basicParams.jsp?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/basicParams.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/basicParams.jsp Mon Nov 7 00:12:29 2005
@@ -0,0 +1,99 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p><b>Create Database Pool</b> -- Step 2: Select Driver, JAR, Parameters</p>
+
+<!-- FORM TO COLLECT DATA FOR THIS PAGE -->
+<form name="<portlet:namespace/>" action="<portlet:actionURL/>">
+ <input type="hidden" name="mode" value="process-params" />
+ <input type="hidden" name="name" value="${pool.name}" />
+ <input type="hidden" name="dbtype" value="${pool.dbtype}" />
+ <input type="hidden" name="url" value="${pool.url}" />
+ <input type="hidden" name="urlPrototype" value="${pool.urlPrototype}" />
+ <input type="hidden" name="jar2" value="${pool.jar2}" />
+ <input type="hidden" name="jar3" value="${pool.jar3}" />
+ <input type="hidden" name="minSize" value="${pool.minSize}" />
+ <input type="hidden" name="maxSize" value="${pool.maxSize}" />
+ <input type="hidden" name="idleTimeout" value="${pool.idleTimeout}" />
+ <input type="hidden" name="blockingTimeout" value="${pool.blockingTimeout}" />
+ <table border="0">
+ <!-- ENTRY FIELD: Driver Class -->
+ <tr>
+ <th><div align="right">JDBC Driver Class:</div></th>
+ <td><input name="driverClass" type="text" size="30" value="${pool.driverClass}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <c:if test="${!(empty driverError)}"><font color="red"><b>Unable to load driver from selected JARs!</b></font></c:if>
+ See the documentation for your JDBC driver.
+ </td>
+ </tr>
+ <!-- ENTRY FIELD: Driver JAR -->
+ <tr>
+ <th><div align="right">Driver JAR:</div></th>
+ <td>
+ <select name="jar1">
+ <option></option>
+ <c:forEach var="jar" items="${jars}">
+ <option <c:if test="${jar == pool.jar1}">selected</c:if>>${jar}</option>
+ </c:forEach>
+ <option>Other</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The JAR holding the selected JDBC driver. Should be installed under GERONIMO/repository/</td>
+ </tr>
+ <!-- ENTRY FIELD: Username -->
+ <tr>
+ <th><div align="right">DB User Name:</div></th>
+ <td><input name="user" type="text" size="20" value="${pool.user}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The username used to connect to the database</td>
+ </tr>
+ <!-- ENTRY FIELD: Password -->
+ <tr>
+ <th><div align="right">DB Password:</div></th>
+ <td><input name="password" type="password" size="20" value="${pool.password}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The password used to connect to the database</td>
+ </tr>
+ <!-- ENTRY FIELD: URL Properties -->
+ <tr>
+ <th colspan="2">Driver Connection Properties</th>
+ </tr>
+ <tr>
+ <th><div align="right">Typical JDBC URL:</div></th>
+ <td><c:out value="${pool.urlPrototype}" /></td>
+ </tr>
+ <c:forEach var="prop" items="${pool.properties}">
+ <tr>
+ <th><div align="right">${fn:substringAfter(prop.key,"property-")}:</div></th>
+ <td><input name="${prop.key}" type="text" size="20" value="${prop.value}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>A property used to connect to ${pool.dbtype}. May be optional (see JDBC driver documentation).</td>
+ </tr>
+ </c:forEach>
+ <!-- SUBMIT BUTTON -->
+ <tr>
+ <td></td>
+ <td><input type="submit" value="Next" /></td>
+ </tr>
+ </table>
+</form>
+<!-- END OF FORM TO COLLECT DATA FOR THIS PAGE -->
+
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="list" />
+ </portlet:actionURL>">Cancel</a></p>
Propchange: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/basicParams.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/confirmURL.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/confirmURL.jsp?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/confirmURL.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/confirmURL.jsp Mon Nov 7 00:12:29 2005
@@ -0,0 +1,99 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p><b>Create Database Pool</b> -- Step 3: Final Pool Configuration</p>
+
+<!-- FORM TO COLLECT DATA FOR THIS PAGE -->
+<form name="<portlet:namespace/>DatabaseForm" action="<portlet:actionURL/>">
+ <input type="hidden" name="mode" value="process-url" />
+ <input type="hidden" name="test" value="true" />
+ <input type="hidden" name="name" value="${pool.name}" />
+ <input type="hidden" name="dbtype" value="${pool.dbtype}" />
+ <input type="hidden" name="user" value="${pool.user}" />
+ <input type="hidden" name="password" value="${pool.password}" />
+ <input type="hidden" name="urlPrototype" value="${pool.urlPrototype}" />
+ <input type="hidden" name="driverClass" value="${pool.driverClass}" />
+ <input type="hidden" name="jar1" value="${pool.jar1}" />
+ <input type="hidden" name="jar2" value="${pool.jar2}" />
+ <input type="hidden" name="jar3" value="${pool.jar3}" />
+ <c:forEach var="prop" items="${pool.properties}">
+ <input type="hidden" name="${prop.key}" value="${prop.value}" />
+ </c:forEach>
+ <table border="0">
+ <!-- ENTRY FIELD: URL -->
+ <tr>
+ <th><div align="right">JDBC Connect URL:</div></th>
+ <td><input name="url" type="text" size="50" value="${pool.url}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Make sure the generated URL fits the syntax for your JDBC driver.</td>
+ </tr>
+ <!-- STATUS FIELD: Driver Load -->
+ <tr>
+ <th><div align="right">Driver Status:</div></th>
+ <td><i>Loaded Successfully</i></td>
+ </tr>
+ <!-- HEADER -->
+ <tr>
+ <th colspan="2">Connection Pool Parameters</th>
+ </tr>
+ <!-- ENTRY FIELD: Min Size -->
+ <tr>
+ <th><div align="right">Pool Min Size:</div></th>
+ <td><input name="minSize" type="text" size="5" value="${pool.minSize}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The minimum number of connections in the pool. Leave blank for default.</td>
+ </tr>
+ <!-- ENTRY FIELD: Max Size -->
+ <tr>
+ <th><div align="right">Pool Max Size:</div></th>
+ <td><input name="maxSize" type="text" size="5" value="${pool.maxSize}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The maximum number of connections in the pool. Leave blank for default.</td>
+ </tr>
+ <!-- ENTRY FIELD: Blocking Timeout -->
+ <tr>
+ <th><div align="right">Blocking Timeout:</div></th>
+ <td><input name="blockingTimeout" type="text" size="7" value="${pool.blockingTimeout}"> (in milliseconds)</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The length of time a caller will wait for a connection. Leave blank for default.</td>
+ </tr>
+ <!-- ENTRY FIELD: Idle timeout -->
+ <tr>
+ <th><div align="right">Idle Timeout:</div></th>
+ <td><input name="idleTimeout" type="text" size="5" value="${pool.idleTimeout}"> (in minutes)</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>How long a connection can be idle before being closed. Leave blank for default.</td>
+ </tr>
+ <!-- SUBMIT BUTTON -->
+ <tr>
+ <td></td>
+ <td><input type="submit" value="Test Connection" />
+ <input type="button" value="Skip Test" onclick="document.<portlet:namespace/>DatabaseForm.test.value='false';document.<portlet:namespace/>DatabaseForm.submit();return false;" />
+ </td>
+ </tr>
+ </table>
+</form>
+<!-- END OF FORM TO COLLECT DATA FOR THIS PAGE -->
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="test" />
+ </portlet:actionURL>">Test Connection</a></p>
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="save" />
+ </portlet:actionURL>">Skip Test & Save</a></p>
+
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="list" />
+ </portlet:actionURL>">Cancel</a></p>
Propchange: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/confirmURL.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/edit.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/edit.jsp?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/edit.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/edit.jsp Mon Nov 7 00:12:29 2005
@@ -0,0 +1,17 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p>This page edits a new or existing database pool.</p>
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="test" />
+ </portlet:actionURL>">Test Connection</a></p>
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="save" />
+ </portlet:actionURL>">Skip Test & Save</a></p>
+
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="list" />
+ </portlet:actionURL>">Cancel</a></p>
Propchange: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/edit.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/list.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/list.jsp?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/list.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/list.jsp Mon Nov 7 00:12:29 2005
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p>This page lists all the available database pools.</p>
+<ul>
+<c:forEach var="pool" items="${pools}">
+ <li>${pool.name}</li>
+</c:forEach>
+</ul>
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="rdbms" />
+ </portlet:actionURL>">Add new database pool</a></p>
Propchange: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/list.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/selectDatabase.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/selectDatabase.jsp?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/selectDatabase.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/selectDatabase.jsp Mon Nov 7 00:12:29 2005
@@ -0,0 +1,70 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p><b>Create Database Pool</b> -- Step 1: Select Name and Database</p>
+
+<!-- FORM TO COLLECT DATA FOR THIS PAGE -->
+<form name="<portlet:namespace/>" action="<portlet:actionURL/>">
+ <input type="hidden" name="mode" value="process-rdbms" />
+ <input type="hidden" name="user" value="${pool.user}" />
+ <input type="hidden" name="password" value="${pool.password}" />
+ <input type="hidden" name="driverClass" value="${pool.driverClass}" />
+ <input type="hidden" name="url" value="${pool.url}" />
+ <input type="hidden" name="urlPrototype" value="${pool.urlPrototype}" />
+ <input type="hidden" name="jar1" value="${pool.jar1}" />
+ <input type="hidden" name="jar2" value="${pool.jar2}" />
+ <input type="hidden" name="jar3" value="${pool.jar3}" />
+ <input type="hidden" name="minSize" value="${pool.minSize}" />
+ <input type="hidden" name="maxSize" value="${pool.maxSize}" />
+ <input type="hidden" name="idleTimeout" value="${pool.idleTimeout}" />
+ <input type="hidden" name="blockingTimeout" value="${pool.blockingTimeout}" />
+ <c:forEach var="prop" items="${pool.properties}">
+ <input type="hidden" name="${prop.key}" value="${prop.value}" />
+ </c:forEach>
+ <table border="0">
+ <!-- ENTRY FIELD: NAME -->
+ <tr>
+ <th><div align="right">Name of Database Pool:</div></th>
+ <td><input name="name" type="text" size="30" value="${pool.name}"></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>A name that is different than the name for any other database pools in the server</td>
+ </tr>
+ <!-- ENTRY FIELD: DB TYPE -->
+ <tr>
+ <th><div align="right">Database Type:</div></th>
+ <td>
+ <select name="dbtype">
+ <c:forEach var="db" items="${databases}">
+ <option <c:if test="${db.name == pool.dbtype}">selected</c:if>>${db.name}</option>
+ </c:forEach>
+ <option>Other</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>The type of database the pool will connect to.</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="submit" value="Next" /></td>
+ </tr>
+ </table>
+</form>
+<!-- END OF FORM TO COLLECT DATA FOR THIS PAGE -->
+
+<%--
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="params" />
+ </portlet:actionURL>">Select predefined database</a></p>
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="edit" />
+ </portlet:actionURL>">Select "other" database</a></p>
+--%>
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="list" />
+ </portlet:actionURL>">Cancel</a></p>
Propchange: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/selectDatabase.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/testConnection.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/testConnection.jsp?rev=331239&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/testConnection.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/dbwizard/testConnection.jsp Mon Nov 7 00:12:29 2005
@@ -0,0 +1,69 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p><b>Create Database Pool</b> -- Step 4: Test Connection</p>
+
+<!-- FORM TO COLLECT DATA FOR THIS PAGE -->
+<form name="<portlet:namespace/>DatabaseForm" action="<portlet:actionURL/>">
+ <input type="hidden" name="mode" value="save" />
+ <input type="hidden" name="user" value="${pool.user}" />
+ <input type="hidden" name="name" value="${pool.name}" />
+ <input type="hidden" name="dbtype" value="${pool.dbtype}" />
+ <input type="hidden" name="password" value="${pool.password}" />
+ <input type="hidden" name="driverClass" value="${pool.driverClass}" />
+ <input type="hidden" name="url" value="${pool.url}" />
+ <input type="hidden" name="urlPrototype" value="${pool.urlPrototype}" />
+ <input type="hidden" name="jar1" value="${pool.jar1}" />
+ <input type="hidden" name="jar2" value="${pool.jar2}" />
+ <input type="hidden" name="jar3" value="${pool.jar3}" />
+ <input type="hidden" name="minSize" value="${pool.minSize}" />
+ <input type="hidden" name="maxSize" value="${pool.maxSize}" />
+ <input type="hidden" name="idleTimeout" value="${pool.idleTimeout}" />
+ <input type="hidden" name="blockingTimeout" value="${pool.blockingTimeout}" />
+ <c:forEach var="prop" items="${pool.properties}">
+ <input type="hidden" name="${prop.key}" value="${prop.value}" />
+ </c:forEach>
+ <table border="0">
+ <!-- STATUS FIELD: Conection Result -->
+ <tr>
+ <th><div align="right">Test Result:</div></th>
+ <td>
+ <c:choose>
+ <c:when test="${empty connectResult}">
+ <font color="red"><i>Connection Error (see below)</i></font>
+ </c:when><c:otherwise>
+ Connected to ${connectResult}
+ </c:otherwise>
+ </c:choose>
+ </td>
+ </tr>
+ <!-- STATUS FIELD: Connection Errors -->
+ <c:if test="${!(empty connectError)}">
+ <tr>
+ <th><div align="right">Test Error:</div></th>
+ <td><textarea rows="30" cols="50">${connectError}</textarea></td>
+ </tr>
+ </c:if>
+ <!-- SUBMIT BUTTON -->
+ <tr>
+ <td></td>
+ <td>
+ <c:choose>
+ <c:when test="${empty connectResult}">
+<input type="submit" value="Save Anyway" />
+<input type="button" value="Edit Settings" onclick="document.<portlet:namespace/>DatabaseForm.mode.value='edit';document.<portlet:namespace/>DatabaseForm.submit();return false;" />
+<input type="button" value="Test Again" onclick="document.<portlet:namespace/>DatabaseForm.mode.value='process-url';document.<portlet:namespace/>DatabaseForm.submit();return false;" />
+ </c:when><c:otherwise>
+<input type="submit" value="Save" />
+ </c:otherwise>
+ </c:choose>
+ </td>
+ </tr>
+ </table>
+</form>
+<!-- END OF FORM TO COLLECT DATA FOR THIS PAGE -->
+
+<p><a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="list" />
+ </portlet:actionURL>">Cancel</a></p>