Last week I updated the littleware project site with a fresh binary code drop - including the first little distro zip bundle download. The little distro unzips into littleware/client, littleware/server, and littleware/webapp folders. The server runs an embedded derby (javadb) database and exports littleware's API services via RMI to standalone and web clients. There are more details on the getting started page.
C:\Users\pasquini\Apps\littleware\server\bin > .\littleServer.bat Mar 5, 2011 2:56:10 PM littleware.base.DynamicEnum registerMemberIfNecessary FINE: Registering new new DynamicEnum type: littleware.asset.AssetType Mar 5, 2011 2:56:11 PM littleware.base.DynamicEnum registerMemberIfNecessary FINE: Registering new new DynamicEnum type: littleware.security.auth.ServiceType Mar 5, 2011 2:56:11 PM littleware.bootstrap.AbstractLittleBootstrap bootstrap FINE: Check bootstrap module: littleware.apps.filebucket.server.BucketServerModule Mar 5, 2011 2:56:11 PM littleware.bootstrap.AbstractLittleBootstrap bootstrap FINE: Check bootstrap module: littleware.apps.tracker.server.TrackerServerModule Mar 5, 2011 2:56:11 PM littleware.bootstrap.AbstractLittleBootstrap bootstrap FINE: Check bootstrap module: littleware.bootstrap.server.AssetServerModule Mar 5, 2011 2:56:11 PM littleware.bootstrap.AbstractLittleBootstrap bootstrap FINE: Check bootstrap module: littleware.bootstrap.server.SimpleServerBuilder$Bootstrap$1 Mar 5, 2011 2:56:11 PM littleware.bootstrap.server.AssetServerModule configure INFO: Configuring JPA in standalone (hibernate) mode ... Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadProperties FINE: Attempting to load properties for: littleware.properties, true Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadProperties FINE: Loaded props: 2 Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadPropsFromFile INFO: Loading config\littleware.properties Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadProperties FINE: Attempting to load properties for: littleware_jdbc.properties, true Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadProperties FINE: Loaded props: 2 Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadPropsFromFile INFO: Loading config\littleware_jdbc.properties Mar 5, 2011 2:56:11 PM littleware.db.DbGuice bindDataSource INFO: Binding DataSource datasource.littleware to jdbc:derby:littleware Mar 5, 2011 2:56:11 PM littleware.asset.server.db.jpa.AbstractGuice configure FINE: Configuring JPA database access Mar 5, 2011 2:56:11 PM littleware.base.PropertiesLoader loadProperties FINE: Attempting to load properties for: littleware.properties, false Mar 5, 2011 2:56:12 PM littleware.base.PropertiesLoader loadProperties FINE: Attempting to load properties for: littleware.properties, false 15 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.0-Final 37 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.0-Final 39 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 44 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 52 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 183 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final 202 [main] INFO org.hibernate.ejb.Version - Hibernate EntityManager 3.5.0-Final 316 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: littleware.asset.server.db.jpa .AssetEntity 376 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity littleware.asset.server.db.jpa.AssetEntity on t able asset 468 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: littleware.asset.server.db.jpa .AssetAttribute 469 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity littleware.asset.server.db.jpa.AssetAttribute o n table asset_attr 480 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: littleware.asset.server.db.jpa .AssetDate 481 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity littleware.asset.server.db.jpa.AssetDate on tab le asset_date 484 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: littleware.asset.server.db.jpa .AssetLink 488 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity littleware.asset.server.db.jpa.AssetLink on tab le asset_link 495 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: littleware.asset.server.db.jpa .TransactionEntity 498 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity littleware.asset.server.db.jpa.TransactionEntit y on table littleTran 506 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: littleware.asset.server.db.jpa .AssetTypeEntity 510 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity littleware.asset.server.db.jpa.AssetTypeEntity on table x_asset_type 586 [main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: littleware.asset.server.db.jpa.Asse tEntity.attributeSet -> asset_attr 586 [main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: littleware.asset.server.db.jpa.Asse tEntity.dateSet -> asset_date 587 [main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: littleware.asset.server.db.jpa.Asse tEntity.linkSet -> asset_link 600 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring 675 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.even t.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled. 684 [main] INFO org.hibernate.connection.ConnectionProviderFactory - Initializing connection provider: org.hibernate.ejb .connection.InjectedDataSourceConnectionProvider 688 [main] INFO org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider - Using provided datasource 2821 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: Apache Derby, version: 10.5.3.0 - (802917) 2821 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: Apache Derby Embedded JDBC Driver, version: 10.5.3.0 - (802917) 2867 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.DerbyDialect 2886 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Transaction strategy: org.hibernate.transaction.J DBCTransactionFactory 2889 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 2889 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled 2895 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled 2903 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled 2904 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled 2911 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto 2914 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1 2916 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled 2919 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled 2923 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled 2926 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 2934 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory 2935 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {} 2936 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: enabled 2939 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled 2942 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled 2944 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFact ory 2947 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled 2949 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled 2963 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled 2963 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled 2965 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo 2967 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled 2968 [main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled 3054 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory 3447 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured Mar 5, 2011 2:56:16 PM littleware.asset.server.db.jpa.SimpleJpaTransaction endDbUpdate FINE: Transaction complete, rollback: false Mar 5, 2011 2:56:17 PM littleware.bootstrap.server.AssetServerModule$Activator start INFO: Looking for RMI registry on port: 1239 Mar 5, 2011 2:56:17 PM littleware.bootstrap.server.AssetServerModule$Activator start INFO: littleware RMI start ok Mar 5, 2011 2:56:17 PM littleware.bootstrap.AbstractLittleBootstrap bootstrap FINE: Waiting for OSGi startup ... Mar 5, 2011 2:56:17 PM littleware.bootstrap.AbstractLittleBootstrap$SetupActivator$1 frameworkEvent FINE: Triggering startup barrier ... < littleware RMI server bootstrap < hit any key to shutdown >
The littleware/client folder currently just holds the lgo (littleware go) tool - which is a launcher for a small suite of littleware.lgo.LgoCommand derived tools that include a Swing-based GUI for browsing the littleware node tree database, and the command line version of the Voyager to Vufind harvester tool we developed at Auburn.
C:\Users\pasquini\Apps\littleware\client\bin > ./lgo.bat help Mar 5, 2011 3:07:40 PM littleware.security.auth.client.ClientLoginModule login INFO: User authenticated: pasquini Mar 5, 2011 3:07:41 PM littleware.base.PropertiesLoader loadPropsFromFile INFO: Loading C:\Users\pasquini\.littleware\edu\auburn\library\voyager\Voyager.properties Mar 5, 2011 3:07:41 PM littleware.db.DbGuice bindDataSource Command use: lgo [+user name] [+mode client|app] [+url http://server:port] [+profile cli|swing] command options +mode [local|client] -- client establishes session with littleware server, default is client +profile [cli|swing] -- specify AppProfile to pass to AppModuleFactory modules at bootup time +user [username] -- user to authenticate as in client mode, defaults to current OS user +url [server-info] -- url specifies host/port information for the littleware server in client mode command.not.found: No help found for command: , available commands: littleware.apps.lgo.GetAssetCommand [get, cat] Get the asset at a given path littleware.apps.lgo.ListChildrenCommand [ls] List the children under a given path littleware.apps.lgo.DeleteAssetCommand [delete, rm] Delete as asset at a given path littleware.apps.lgo.GetByNameCommand [byname, nget] Get the asset at a given path littleware.lgo.XmlEncodeCommand [xencode, xenc] lgo xmlencode littleware.apps.lgo.CreateUserCommand [mkuser, adduser] Create a littleware.USER under /littleware.home/Users/ littleware.apps.lgo.SetImageCommand [setimage] Associate an image with an asset at a given path littleware.lgo.EzHelpCommand [help] lgo help <command> littleware.apps.lgo.GetRootPathCommand [abspath] Convert the given path to a rooted path littleware.apps.lgo.LgoBrowserCommand [browse] launch littleware browser littleware.apps.lgo.CreateFolderCommand [mkdir] Create a littleware.GENERIC asset at a given path littleware.apps.lgo.CreateLockCommand [mklock] Create a littleware.LOCK asset at a given path edu.auburn.library.tool.vygr2vfind.view.V2vLgoCommand [v2v] Copy records from Voyager to a Vufind Solr index
C:\Users\pasquini\Apps\littleware\client\bin > ./lgo.bat help v2v Mar 5, 2011 3:09:45 PM littleware.security.auth.client.ClientLoginModule login INFO: User authenticated: pasquini Mar 5, 2011 3:09:45 PM littleware.base.PropertiesLoader loadPropsFromFile INFO: Loading C:\Users\pasquini\.littleware\edu\auburn\library\voyager\Voyager.properties Mar 5, 2011 3:09:45 PM littleware.db.DbGuice bindDataSource Command use: lgo [+user name] [+mode client|app] [+url http://server:port] [+profile cli|swing] command options +mode [local|client] -- client establishes session with littleware server, default is client +profile [cli|swing] -- specify AppProfile to pass to AppModuleFactory modules at bootup time +user [username] -- user to authenticate as in client mode, defaults to current OS user +url [server-info] -- url specifies host/port information for the littleware server in client mode edu.auburn.library.tool.vygr2vfind.view.V2vLgoCommand: Copy records from Voyager to a Vufind Solr index Copy records from Voyager to a Vufind Solr index. v2v -min [min] -max [max] [-halt [HH:mm] -continue [stubfile]] -solr /path/to/solr/index/biblio v2v -age [age] -solr /path/to/solr/index/biblio v2v -idfile [file full of bib-ids] -solr /path/to/solr/index/biblio Note: loading vufind.properties from DocsFolder/vygr2vfind Note: specify jdbc URL for Voyager database in ~/.littleware/edu/auburn/library/voyager/Voyager.properties - datasource.voyager = jdbc:oracle:thin:user/password@host:port:vger
There's not much useful there really, but it's nice to at least have something to show. The code drop also updates the IVY artifacts and web-start apps hosted by littleware's ivy2maven2 repository as well as the online javadoc and scaladoc API docs.
I was pretty happy with how smoothly the release process went thanks to the ivy build setup. The root build.xml file includes buildAll and buildAndTest rules that a local jenkins continuous integration server executes whenever I push a change to my personal repositories. Everything would have been great if not for the problems that with java 6 update 24 web-start security that plagued me. Ugh!
Anyway, I now need to decide what littleware tasks to tackle next. On the one hand there are several API and infrastructure design flaws that I need to eventually address, but on the other hand it would be good to build out some useful littleware-based applications to demonstrate the systems utility. On a 3rd hand the more application level code I write the more annoying an API-level refactoring will be to propagate, and a 4th hand realizes that application level development is the best way to get ideas for improving an API, and a 5th hand points out that the experience and learning I gain is the main benefit of working on littleware in the first place. I'll probably just continue with the tasks outlined in the current SCRUM sprint, and continue to develop the scala tools in littleware's catalog repository.
The academic library is a terrible market to work for as a library is amazingly cheap, and even if the library had money - it wouldn't want to change anything. A true librarian would turn the clock back to card catalog days in a heart beat. If a librarian ever gets the bomb, then we're all in trouble; he'll blast us back to the stone age smiling ear to ear. These negatives are positives for a loan frickjack that can bundle a suite of open source tools in a cloud-hosted library-in-a-box, and make money charging $200- a month. We'll see what I think next month.
No comments:
Post a Comment