Bug fixiing: Add system properties, change main loop in InitialContextFactoryImpl and set up context.xml xsd file

master
paul perez 2014-02-05 17:41:36 +00:00
parent cecb281706
commit 701b44443b
6 changed files with 397 additions and 13 deletions

View File

@ -28,8 +28,7 @@ import org.apache.tomcat.jdbc.pool.PoolProperties;
* @author OpenESB Community
*/
public class DataSourcePoolFactoryimpl implements DataSourcePoolFactory {
private final ResourceBundle mResourceBundle;
private String mMessage;
private final String mClassName = "DataSourcePoolFactoryimpl";
@ -39,7 +38,7 @@ public class DataSourcePoolFactoryimpl implements DataSourcePoolFactory {
I18NBundle nBundle = new I18NBundle("net.openesb.standalone.naming.utils");
mResourceBundle = nBundle.getBundle();
}
@Override
/* GetDatasource method is used to create dynamically and set up a pooled datasource. Information and parameters
* are provided by dspProperties. The first part of the method create dynamically a native datasource.
@ -221,16 +220,16 @@ public class DataSourcePoolFactoryimpl implements DataSourcePoolFactory {
sLogger.logp(Level.INFO, mClassName, methodName, mMessage, ex);
}
}
// set the pool and get a Poolled Datasource
poolProperties.setDataSource(nativeDS);
outputDataSource = new org.apache.tomcat.jdbc.pool.DataSource(poolProperties);
}
return outputDataSource;
// set the pool and get a Poolled Datasource
poolProperties.setDataSource(nativeDS);
outputDataSource = new org.apache.tomcat.jdbc.pool.DataSource(poolProperties);
return outputDataSource;
}
@Override
public XADataSource getXADataSource(DataSourcePoolPropertiesComplexType dspProperties) {
return (XADataSource) this.getDataSource(dspProperties);
return (XADataSource) this.getDataSource(dspProperties);
}
/* List to Map is an internal methode used to convert a List<PropertyComplexType> to a Map.
@ -278,5 +277,5 @@ public class DataSourcePoolFactoryimpl implements DataSourcePoolFactory {
mapFields.put(fieldName, field);
}
return mapFields;
}
}
}

View File

@ -58,9 +58,9 @@ public class InitialContexFactoryImpl implements InitialContextFactory {
public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
Map<String, DataSource> datasourceMap = new HashMap<String, DataSource>();
String methodName = "getInitialContext";
// /* Contect initialisation Just set the system properties and use the class InitialContext*/
// System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
// System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");
/*Context initialisation Just set the system properties and use the class InitialContext*/
System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");
Context initialContext = new InitialContext();
mMessage = mResourceBundle.getString("context.created");
sLogger.logp(Level.FINE, mClassName, methodName, mMessage);
@ -183,7 +183,11 @@ public class InitialContexFactoryImpl implements InitialContextFactory {
/* Check if datasource is not null then put in the context since exception are catch */
if (null != dataSource) {
datasourceMap.put(dbConnectorName, dataSource);
initialContext.rebind(jndiName, dataSource);
try {
initialContext.rebind(jndiName, dataSource);
} catch (NamingException ex) {
initialContext.bind(jndiName, dataSource);
}
mMessage = mResourceBundle.getString("datasource.processed.bind.success");
sLogger.logp(Level.FINE, mClassName, methodName, mMessage, new Object[]{jndiName});
}

View File

@ -0,0 +1,28 @@
context.created=Empty JNDI Context has been created
context.url.not.provided.ID=NAMING-0001
context.url.not.provided=The URL context context is not provided.
context.url.read=The URL for the context has been retrieved and its value is {0}
url.context.name.malformed.ID=NAMING-0002
url.context.name.malformed=The URL {0} provided for the context is malformed
jaxb.unmarshalling.failed=UNMarshalling failed with the provided URL {0}
context.binding.ok=context binding is successful and the data have been unmarshaled
number.dataSourcePoolProperties.found={0} DataSourcePool properties have been found in the context
datasourcepoolproperties.found.in.context=DatasourcePoolProperties {0} has been found in the context
number.jdbcResource.declaration.found={0} JDBC Resources have defined in the context
in.process=in process
datasource.created.succesfully=A datasource has been created successfully for the JNDI Name {0}
jndi.value.already.defined=The JNDI value {0} has been declare more than once. Just the first declaration is taken into account
datasource.in.process=Creation Datasource for {0} in process
datasource.processed.bind.success=Datasource for {0} has been processed and bind with success
xadatasource.in.process=Creation XADatasource for {0} in process
xadatasource.processed.bind.success=XADatasource for {0} has been processed and bind with success
bad.resource.type=The resource type {0} defined in the datasourcePoolProperties {1} is not supported
start.instanciate.datasource=Start datasource {0} instanciation
datasource.class.not.found=Datasource class {0} is not found, please check OpenESB classpath
impossible.instanciate.datasource=Impossible to instanciate the datasource {0}
catch.exception=The following exception has been catch
invalid.field.name=Field name "{0}" does not exist in the class {1} please check class and ancestor content and context properties.
field.type.not.process= The field {0} in the class {1} is a not supported type {2}. Just set filed with primitive and String type.
field.not.set=The field {0} has not been set.
native.datasource.set.succesfully=Native datasource {0} has been set successfully
start.pool.configuration= Start pool configuration

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : OEContext.xml
Created on : 24 January 2014, 10:22
Author : polperez
Description:
Purpose of the document follows.
-->
<ns0:context xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:ns0='http://org.open-esb/standalone/OEContext'
xsi:schemaLocation='http://org.open-esb/standalone/OEContext OEContext.xsd'>
<ns0:dataSource-pool-properties>
<ns0:dbConnector-name>Derby Connector</ns0:dbConnector-name>
<ns0:datasource-classname>org.apache.derby.jdbc.ClientDataSource40</ns0:datasource-classname>
<ns0:resource-type>Datasource</ns0:resource-type>
<ns0:database-name>DERBY</ns0:database-name>
<ns0:database-vendor>OpenESB Community</ns0:database-vendor>
<ns0:database-version>10.7.1.1</ns0:database-version>
<ns0:dbconnector-description>DBConnector for Derby</ns0:dbconnector-description>
<ns0:dataSource-properties>
<ns0:property>
<ns0:name>user</ns0:name>
<ns0:value>app</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>password</ns0:name>
<ns0:value>app</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>serverName</ns0:name>
<ns0:value>localhost</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>portNumber</ns0:name>
<ns0:value>1527</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>databaseName</ns0:name>
<ns0:value>sample</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:dataSource-properties>
<ns0:pool-properties>
<ns0:property>
<ns0:name>initialSize</ns0:name>
<ns0:value>11</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxActive</ns0:name>
<ns0:value>20</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>minIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:pool-properties>
</ns0:dataSource-pool-properties>
<ns0:jdbc-resources>
<ns0:dbConnector-name>Derby Connector</ns0:dbConnector-name>
<ns0:jndi-name>Derby01</ns0:jndi-name>
<ns0:description>Datasource connection to Derby</ns0:description>
</ns0:jdbc-resources>
</ns0:context>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://org.open-esb/standalone/OEContext"
xmlns:tns="http://org.open-esb/standalone/OEContext"
elementFormDefault="qualified">
<xsd:complexType name="pool-propertiesComplexType">
<xsd:sequence>
<xsd:element name="property" type="tns:propertyComplexType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="propertyComplexType">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="name" type="xsd:string"></xsd:element>
<xsd:element name="value" type="xsd:string"></xsd:element>
<xsd:element name="description" type="xsd:string" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="dataSource-pool-propertiesComplexType">
<xsd:sequence>
<xsd:element name="dbConnector-name" type="xsd:string"></xsd:element>
<xsd:element name="datasource-classname" type="xsd:string"></xsd:element>
<xsd:element name="resource-type">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Datasource">
<xsd:annotation>
<xsd:documentation>Datasource</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="XADatasource">
<xsd:annotation>
<xsd:documentation>XADatasource</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="database-name" type="xsd:string"></xsd:element>
<xsd:element name="database-vendor" type="xsd:string"></xsd:element>
<xsd:element name="database-version" type="xsd:string"></xsd:element>
<xsd:element name="dbconnector-description" type="xsd:string" minOccurs="0"></xsd:element>
<xsd:element name="dataSource-properties" type="tns:dataSource-propertiesComplexType" minOccurs="1" maxOccurs="1"></xsd:element>
<xsd:element name="pool-properties" type="tns:pool-propertiesComplexType"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="dataSource-propertiesComplexType">
<xsd:sequence>
<xsd:element name="property" type="tns:propertyComplexType" maxOccurs="unbounded" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="oeContextComplexType">
<xsd:sequence>
<xsd:element name="dataSource-pool-properties" type="tns:dataSource-pool-propertiesComplexType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
<xsd:element name="jdbc-resources" type="tns:jdbc-resourceComplexType" maxOccurs="unbounded" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="context" type="tns:oeContextComplexType"></xsd:element>
<xsd:complexType name="jdbc-resourceComplexType">
<xsd:sequence>
<xsd:element name="dbConnector-name" type="xsd:string"></xsd:element>
<xsd:element name="jndi-name" type="xsd:string"></xsd:element>
<xsd:element name="description" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

View File

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : OEContext.xml
Created on : 25 December 2013, 10:05
Author : polperez
Description:
Purpose of the document follows.
-->
<ns0:context xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:ns0='http://org.open-esb/standalone/OEContext'
xsi:schemaLocation='http://org.open-esb/standalone/OEContext OEContext.xsd'>
<ns0:dataSource-pool-properties>
<ns0:dbConnector-name>MYSQL Connector</ns0:dbConnector-name>
<ns0:datasource-classname>com.mysql.jdbc.jdbc2.optional.MysqlDataSource</ns0:datasource-classname>
<ns0:resource-type>Datasource</ns0:resource-type>
<ns0:database-name>MYSQL</ns0:database-name>
<ns0:database-vendor>Oracle</ns0:database-vendor>
<ns0:database-version>5.6</ns0:database-version>
<ns0:dbconnector-description>DBConnector for MySQL</ns0:dbconnector-description>
<ns0:dataSource-properties>
<ns0:property>
<ns0:name>user</ns0:name>
<ns0:value>root</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>password</ns0:name>
<ns0:value>password</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>hostName</ns0:name>
<ns0:value>localhost</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>port</ns0:name>
<ns0:value>3306</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>databaseName</ns0:name>
<ns0:value>test</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:dataSource-properties>
<ns0:pool-properties>
<ns0:property>
<ns0:name>initialSize</ns0:name>
<ns0:value>11</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxActive</ns0:name>
<ns0:value>20</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxIdle</ns0:name>
<ns0:value>11</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>minIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:pool-properties>
</ns0:dataSource-pool-properties>
<ns0:dataSource-pool-properties>
<ns0:dbConnector-name>Derby Connector</ns0:dbConnector-name>
<ns0:datasource-classname>org.apache.derby.jdbc.ClientDataSource40</ns0:datasource-classname>
<ns0:resource-type>Datasource</ns0:resource-type>
<ns0:database-name>DERBY</ns0:database-name>
<ns0:database-vendor>OpenESB Community</ns0:database-vendor>
<ns0:database-version>10.7.1.1</ns0:database-version>
<ns0:dbconnector-description>DBConnector for Derby</ns0:dbconnector-description>
<ns0:dataSource-properties>
<ns0:property>
<ns0:name>user</ns0:name>
<ns0:value>app</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>password</ns0:name>
<ns0:value>app</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>serverName</ns0:name>
<ns0:value>localhost</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>portNumber</ns0:name>
<ns0:value>1527</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>databaseName</ns0:name>
<ns0:value>sample</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:dataSource-properties>
<ns0:pool-properties>
<ns0:property>
<ns0:name>initialSize</ns0:name>
<ns0:value>11</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxActive</ns0:name>
<ns0:value>20</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>minIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:pool-properties>
</ns0:dataSource-pool-properties>
<ns0:dataSource-pool-properties>
<ns0:dbConnector-name>Postgres Connector</ns0:dbConnector-name>
<ns0:datasource-classname>org.postgresql.ds.PGSimpleDataSource</ns0:datasource-classname>
<ns0:resource-type>Datasource</ns0:resource-type>
<ns0:database-name>POSTGRESQL</ns0:database-name>
<ns0:database-vendor>Postgres</ns0:database-vendor>
<ns0:database-version>9.1-90</ns0:database-version>
<ns0:dbconnector-description>DBConnector for postgres</ns0:dbconnector-description>
<ns0:dataSource-properties>
<ns0:property>
<ns0:name>user</ns0:name>
<ns0:value>postgres</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>password</ns0:name>
<ns0:value>password</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>serverName</ns0:name>
<ns0:value>localhost</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>portNumber</ns0:name>
<ns0:value>5432</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>databaseName</ns0:name>
<ns0:value>postgres</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:dataSource-properties>
<ns0:pool-properties>
<ns0:property>
<ns0:name>initialSize</ns0:name>
<ns0:value>11</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxActive</ns0:name>
<ns0:value>20</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>maxIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
<ns0:property>
<ns0:name>minIdle</ns0:name>
<ns0:value>10</ns0:value>
<ns0:description></ns0:description>
</ns0:property>
</ns0:pool-properties>
</ns0:dataSource-pool-properties>
<ns0:jdbc-resources>
<ns0:dbConnector-name>MYSQL Connector</ns0:dbConnector-name>
<ns0:jndi-name>MySQLServer01</ns0:jndi-name>
<ns0:description>Datasource connection to MySQ</ns0:description>
</ns0:jdbc-resources>
<ns0:jdbc-resources>
<ns0:dbConnector-name>Derby Connector</ns0:dbConnector-name>
<ns0:jndi-name>Derby01</ns0:jndi-name>
<ns0:description>Datasource connection to Derby</ns0:description>
</ns0:jdbc-resources>
<ns0:jdbc-resources>
<ns0:dbConnector-name>Postgres Connector</ns0:dbConnector-name>
<ns0:jndi-name>Postgres01</ns0:jndi-name>
<ns0:description>Datasource connection to Postgres</ns0:description>
</ns0:jdbc-resources>
</ns0:context>