Quick Search
Browse
Pages
Blog
Labels
Attachments
Mail
Advanced
What’s New
Space Directory
Feed Builder
Keyboard Shortcuts
Confluence Gadgets
Log In
Sign Up
Dashboard
GeoTools
Copy Page
You are not logged in. Any changes you make will be marked as
anonymous
. You may want to
Log In
if you already have an account. You can also
Sign Up
for a new account.
This page is being edited by
.
Paragraph
Paragraph
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Preformatted
Quote
Bold
Italic
Underline
More colours
Strikethrough
Subscript
Superscript
Monospace
Clear Formatting
Bullet list
Numbered list
Outdent
Indent
Align left
Align center
Align right
Link
Table
Insert
Insert Content
Image
Link
Attachment
Symbol
Emoticon
Wiki Markup
Horizontal rule
tinymce.confluence.insert_menu.macro_desc
Info
JIRA Issue
Status
Gallery
Tasklist
Table of Contents
Other Macros
Page Layout
No Layout
Two column (simple)
Two column (simple, left sidebar)
Two column (simple, right sidebar)
Three column (simple)
Two column
Two column (left sidebar)
Two column (right sidebar)
Three column
Three column (left and right sidebars)
Undo
Redo
Find/Replace
Keyboard Shortcuts Help
<table class="confluenceTable"><tbody> <tr> <td class="confluenceTd"><p> Module Maintainer: </p></td> <td class="confluenceTd"><p> <a class="confluence-link confluence-userlink" data-username="jive" href="/display/~jive" data-linked-resource-id="1159" data-linked-resource-type="userinfo" username="jive" data-linked-resource-default-alias="Jody Garnett" data-base-url="http://docs.codehaus.org">Jody Garnett</a> </p></td> </tr> <tr> <td class="confluenceTd"><p> Status: </p></td> <td class="confluenceTd"><p> <table class="wysiwyg-macro" data-macro-name="excerpt" data-macro-parameters="atlassian-macro-output-type=INLINE" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2V4Y2VycHQ6YXRsYXNzaWFuLW1hY3JvLW91dHB1dC10eXBlPUlOTElORX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p>Construction of a epsg-oracle CRSAuthority that will work in a Java EE environment</p></td></tr></table> </p></td> </tr> <tr> <td class="confluenceTd"><p> Email Help: </p></td> <td class="confluenceTd"><p> jgarnett@refractions.net </p></td> </tr> <tr> <td class="confluenceTd"><p> Plug-in: </p></td> <td class="confluenceTd"><p> CRSAuthority </p></td> </tr> <tr> <td class="confluenceTd"><p> User Docs: </p></td> <td class="confluenceTd"><p> <a class="confluence-link unresolved" data-content-title="EPSG Oracle Plugin" data-space-key="GEOTDOC" data-linked-resource-default-alias="EPSG Oracle Plugin" href="#">EPSG Oracle Plugin</a> </p></td> </tr> </tbody></table> <h2>Research</h2> <p>The epsg-oracle plugin is an experiment focused on cleaning up the JDBC Authority abstract classes to ensure the DataSource can be provided.</p> <h3>IP Review</h3> <ul class="alternate"> <li><a class="external-link" href="http://svn.geotools.org/geotools/trunk/gt/modules/unsupported/epsg-oracle/review.txt" rel="nofollow">http://svn.geotools.org/geotools/trunk/gt/modules/unsupported/epsg-oracle/review.txt</a></li> </ul> <h2>Development</h2> <h4>Actually Using Oracle</h4> <p>To develop this module you will need to follow the optional section in the developers guide for Oracle. This will place an oracle jdbc driver into your local maven repository where it can then be used during the online tests.</p> <table class="wysiwyg-macro" data-macro-name="code" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre> C:> cd C:\oracle\product\10.2.0\jdbc\lib C:\oracle\product\10.2.0\jdbc\lib>mvn install:install-file -Dfile=ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0 -Dpackaging=jar </pre></td></tr></table> <p>The choice of maven profile (to use oracle or to not use oracle) is controlled with a <strong>oracle</strong> property.</p> <table class="wysiwyg-macro" data-macro-name="code" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre> mvn clean install -Doracle=true </pre></td></tr></table> <p>Or to set up for testing in eclipse:</p> <table class="wysiwyg-macro" data-macro-name="code" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre> mvn eclipse:eclipse -Doracle=true </pre></td></tr></table> <h4>Using Online Tests</h4> <p>The other thing you will need to do for online tests is place a <strong>oracle.properties</strong> file describing <strong>your</strong> database in the magic location below.</p> <table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="title=C:\\Documents and Settings\\Jody\\.geotools\\epsg\\oracle.properties" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGl0bGU9QzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1xKb2R5XC5nZW90b29sc1xlcHNnXG9yYWNsZS5wcm9wZXJ0aWVzfQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre> user=jody password=*** url=jdbc:oracle:thin:@bilbi:1521:orcl </pre></td></tr></table> <p>You can then run the online tests:</p> <table class="wysiwyg-macro" data-macro-name="code" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre> mvn -Doracle.jdbc=true test -P online </pre></td></tr></table> <h2>Ideas</h2> <p>Some ideas on the use of DataSource in GeoTools (and how we can set up a testing environment are recorded here): <a class="confluence-link" href="/display/GEOTOOLS/J2EE+and+Connection+Pools" data-linked-resource-id="73174" data-linked-resource-type="page" data-linked-resource-default-alias="J2EE and Connection Pools" data-base-url="http://docs.codehaus.org">J2EE and Connection Pools</a></p> <p>In addition the following problems have been noted ...</p> <p><code>org.geotools.referencing.factory</code>:</p> <ul class="alternate"> <li><code>AbstractAuthorityFactory</code> - some features are just package-visible (<code>org.geotools.referencing.factory</code>) <ul> <li><span style="color: blue;">They were package-private on purpose. They are usually implementation of public API defined somewhere else. We would need to know why access to those implementation class are wanted, and if there is any way to adress the need without making the implementation class public.</span></li> </ul> </li> <li><code>BufferedAuthorityFactory</code> had problem with <code>put(Object, Object)</code> not caching <ul> <li><span style="color: blue;">Caching should work, at least in 2.4-SNAPSHOT. Need more details about why caching is considered to not work.</span></li> </ul> </li> </ul> <p><code>org.geotools.referencing.factory.epsg</code>:</p> <ul class="alternate"> <li><code>AuthorityCodes</code> is only package visisble <ul> <li><span style="color: blue;">See previous comment about implementation class.</span></li> </ul> </li> <li><code>BursaWolfInfo</code> is only package visible <ul> <li><span style="color: blue;">Should <strong>NOT</strong> be public. This is a very low level implementation detail.</span></li> </ul> </li> <li><code>DataSource</code> - <img class="emoticon emoticon-warning" data-emoticon-name="warning" border="0" src="/s/en_GB/3278/15/_/images/icons/emoticons/warning.png" alt="(warning)" title="(warning)" /> this is WRONG we cannot extend <code>DataSource</code> on our own (we need to use one provided by others) <ul> <li><span style="color: blue;">Already deprecated in 2.4-SNAPSHOT for many months. The only reason why it still there is to respect the "deprecate first, delete after next release" cycle.</span></li> </ul> </li> <li><code>DefaultFactory</code> requirements <ul class="alternate"> <li>Some kind of <code>DATASOURCE_NAME</code> to work in JBoss (should be configurable)</li> </ul> <ul> <li><span style="color: blue;">This is already configurable in 2.4-SNAPSHOT through <code>Hints.EPSG_DATASOURCE_NAME</code>.</span></li> </ul> <ul class="alternate"> <li>Require <code>DEFAULT_BUFFER_MAX</code> and <code>DEFAULT_PRIORITY_DEC</code> as constructor parameters, either as <code>DefaultFactory(Hints, int, int)</code> to expose the parent constructor, or as new Hints of their own</li> <li><code>createFactory()</code> needs to wrap the <code>DataSource</code> obtained from JNDI into a class that implements the local <code>DataSource</code> interface.</li> </ul> <ul> <li><span style="color: blue;">Not needed anymore, since the local <code>DataSource</code> interface is now deprecated.</span></li> </ul> <ul class="alternate"> <li><code>createFactory()</code> cannot bind the DataSource into JNDI (will not always have permission)</li> </ul> <ul> <li><span style="color: blue;">2.4-SNAPSHOT already do not bind anymore.</span></li> </ul> <ul class="alternate"> <li><code>createBackingStore()</code> needs to close the JDBC connection obtained from the <code>DataSource</code> (thereby returning it to the pool)</li> </ul> <ul> <li><span style="color: blue;">We already close the connection (since 2.2 I believe), but after a timeout. The default timeout is 20 minutes. We can change that to a lower level, for example 2 minutes.</span></li> </ul> <ul class="alternate"> <li><code>FactoryUsingAnsiSQL</code> - should not cache the connection (the DataSource will do that)</li> </ul> <ul> <li><span style="color: blue;">We keep the connection until it is closed by the above-cited timeout. We recreate it from the <code>DataSource</code> after the timeout. 2.4-SNAPSHOT already do that.</span></li> </ul> <ul class="alternate"> <li><code>FactoryUsingOracleSQL</code> - addition to <code>'AS'</code>, the Oracle reserved word <code>'FILE'</code> is replaced in the query Strings. This necessary because one query uses <code>'FILE'</code> to rename a column in a <code>SELECT</code> for a column. This factory is used by the <code>AbstractDataSource</code></li> <li><code>FactoryUsingSQL</code> - also caches the Connection instead of DataSource</li> <li><code>TableInfo</code> - not public</li> </ul> <ul> <li><span style="color: blue;">Again this is a low-level implementation detail that should never be public.</span></li> </ul> </li> </ul> <p>The following bug reports are important:</p> <ul class="alternate"> <li><a class="external-link" href="http://jira.codehaus.org/browse/GEOT-909" rel="nofollow">http://jira.codehaus.org/browse/GEOT-909</a> - EPSG DefaultFactory does not work in an EJB environment <ul class="alternate"> <li>Need to supply a <code>DATASOURCE_NAME</code> hint - should be of the form <code>"java:EPSG"</code> to keep JBoss happy</li> </ul> <ul> <li><span style="color: blue;">Already done in 2.4-SNAPSHOT.</span></li> </ul> <ul class="alternate"> <li><code>FactoryUsingSQL</code> should not remove connection from a pool like <code>FactoryUsingSQL</code> does (need to connect and close on each use). Needed for a multi user environment like Java EE.</li> </ul> <ul> <li><span style="color: blue;">The connection is already closed after a timeout (20 minutes by default, but we can change that). It was already working like that in 2.2.</span></li> </ul> <ul class="alternate"> <li>Need to either use a single factory (may become a bottleneck) or use a pool of factories (will need to fix the <code>FactoryUsingSQL</code> connection cache first)</li> </ul> <ul> <li><span style="color: blue;">We need a single instance of <code>BufferedAuthorityFactory</code> if we want caching to work. It would be possible to update <code>BufferedAuthorityFactory</code> in order to handle many instances of <code>FactoryUsingSQL</code>, but I would like to see if there is really a bottleneck there before to introduce this complication. I was assuming that in typical cases, a user will work with a small set of CRS (~5) appropriate for the area he is working on, in which case many instances of <code>FactoryUsingSQL</code> will not give us much.</span></li> </ul> </li> <li><a class="external-link" href="http://jira.codehaus.org/browse/GEOT-908" rel="nofollow">http://jira.codehaus.org/browse/GEOT-908</a> - FactoryUsingSQL uses Oracle reserved word in query <ul class="alternate"> <li>fixed?</li> </ul> </li> <li><a class="external-link" href="http://jira.codehaus.org/browse/GEOT-907" rel="nofollow">http://jira.codehaus.org/browse/GEOT-907</a> - Caching in BufferedAuthorityFactory does not work <ul class="alternate"> <li>fixed?</li> </ul> </li> </ul> <h2>Outstanding Issues</h2> <p>This is a research module, and is not currently tracked using Jira. This is however associated with <strong>referencing</strong>:</p> <img class="editor-inline-macro" src="/plugins/servlet/confluence/placeholder/macro?definition=e2ppcmFpc3N1ZXM6dXJsPWh0dHA6Ly9qaXJhLmNvZGVoYXVzLm9yZy9zci9qaXJhLmlzc3Vldmlld3M6c2VhcmNocmVxdWVzdC14bWwvdGVtcC9TZWFyY2hSZXF1ZXN0LnhtbD8mcGlkPTEwMjcwJnJlc29sdXRpb249LTEmY29tcG9uZW50PTEwODE0JnNvcnRlci9maWVsZD1wcmlvcml0eSZzb3J0ZXIvb3JkZXI9REVTQyZ0ZW1wTWF4PTEwMDB9&locale=en_GB&version=2" data-macro-name="jiraissues" data-macro-parameters="url=http://jira.codehaus.org/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?&pid\=10270&resolution\=-1&component\=10814&sorter/field\=priority&sorter/order\=DESC&tempMax\=1000">
Please type the word appearing in the picture.
Attachments
Labels
Location
Watch this page
< Edit
Preview >
Loading…
Save
Cancel
Next hint
search
attachments
weblink
advanced