Fantastic!

I am glad that you found the issue - that wouldn't have been a straightforward 
causal to track down.

Unfortunately we cannot package and ship any binaries that aren't fully Apache 
license compliant etc.  However, we can do two different things:
- We can still grab mysql from maven central for developers to use in a 
developer environment, just like we do with the default umls dictionary.
- We can provide an easy means for fetching the library post-installation.  A 
Dockerfile for ctakes, a downloader that launches when mysql is selected, or a 
good old fashioned installation script.  Luckily the mysql library is easily 
available and we wouldn't need to put together a runtime package like APR.

https://books.google.com/books?id=HTo_AmTpQPMC&pg=PA14&lpg=PA14&dq=apache+license+mysql&source=bl&ots=uOpifTcI2E&sig=-qlWP2-pXtEkwPM8BsKd73GvX9g&hl=en&sa=X&ved=0ahUKEwjhqrrX55PYAhVm5YMKHTB2AGM4ChDoAQhMMAY#v=onepage&q=apache%20license%20mysql&f=false

https://apr.apache.org/download.cgi

I think that we could make a class that searches for mysql in the environment 
if the mysql option is selected.   ctakes-gui has a dependency that makes this 
easy.  Then a little downloader that throws a driver into the lib/ directory.  
If needed we could create a factory that returns a wrapper for the required 
mysql driver classes, and the factory could contain a class loader that 
guarantees the jar is discovered post-installation.  That way a restart of the 
gui wouldn't be necessary ... though that may not be a big deal.

I am just throwing out some ideas.  There is probably a very nice solution that 
I haven't considered.

Sean



-----Original Message-----
From: Matthew Vita [mailto:matthewvit...@gmail.com] 
Sent: Monday, December 18, 2017 1:23 AM
To: dev@ctakes.apache.org; Sandeep Byatha Gururaja rao; Shane Chesnutt
Subject: cTAKES Rest Service Development - Dictionary GUI MySQL Progress + 1 
Concern [EXTERNAL]

Hi Gandhi, Sean, Tim, Alex, James,

Good news, I was able to get MySQL running in the `ctakes-gui` (recall that I 
am building in a toggle so that folks can create dictionaries using MySQL 
rather than HSQLDB script files).

I found out the source of the issue with bringing in the MySQL dependency.
This one definitely took me a while and was super subtle! If you visit 
/ctakes/ctakes-distribution/src/main/assembly/bin.xml,
<exclude>mysql:*</exclude>is present because it's a n  non-asf compliant 
dependency used by ytex.

Removing the exclude and addingin
<include>mysql:mysql-connector-java</include> gets the correct result:

/ctakes/ctakes-distribution/target/apache-ctakes-4.0.1-SNAPSHOT/lib
matthew
​​
% ls -lash | grep mysql
  3912 -rw-r--r--   1 matthew  staff   1.9M Dec 14 20:23
mysql-connector-java-6.0.6.jar

Just for completeness, this is the exact POM entry:

      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>6.0.6</version>
     </dependency>


Is there anyway we can use MySQL in cTAKES in a way that is compliant with ASF? 
I wonder if MariaDB or Postgresql would be better because they work with JDBC 
and are free/open source. Of course, I am biased towards MySQL/MariaDB because 
the (near) future users of cTAKES Rest Service in the OpenEMR space are going 
to want MySQL/MariaDB users :). Not a huge deal though.

Thanks,

Matthew Vita
www.matthewvita.com

Reply via email to