<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"><channel><title>Disruptive Library Technology Jester &#187; spring framework</title> <atom:link href="http://dltj.org/tag/spring-framework/feed/" rel="self" type="application/rss+xml" /><link>http://dltj.org</link> <description>We&#039;re Disrupted, We&#039;re Librarians, and We&#039;re Not Going to Take It Anymore</description> <lastBuildDate>Mon, 06 Feb 2012 20:04:22 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <cloud domain='dltj.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' /> <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/us/</creativeCommons:license> <item><title>Open Repositories 2011 Report: DSpace on Spring and DuraSpace</title><link>http://dltj.org/article/or11-report-1/</link> <comments>http://dltj.org/article/or11-report-1/#comments</comments> <pubDate>Wed, 08 Jun 2011 13:50:36 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meeting]]></category> <category><![CDATA[DSpace]]></category> <category><![CDATA[Duracloud]]></category> <category><![CDATA[Fedora]]></category> <category><![CDATA[Open Repositories 2011]]></category> <category><![CDATA[spring framework]]></category><guid isPermaLink="false">http://dltj.org/?p=2943</guid> <description><![CDATA[This week I am attending the Open Repositories conference in Austin, Texas, and yesterday was the second preconference day (and the first day I was in Austin). Coming in as I did I only had time to attend two preconference &#8230; <a href="http://dltj.org/article/or11-report-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/?p=2943"></abbr><p>This week I am attending the <a href="https://conferences.tdl.org/or/index.php/OR2011/OR2011main">Open Repositories conference</a> in Austin, Texas, and yesterday was the second preconference day (and the first day I was in Austin).  Coming in as I did I only had time to attend two preconference sessions: one on the integration &#8212; or maybe &#8220;invasion&#8221; of the <a href="http://www.springsource.org/" title="SpringSource.org |">Spring Framework</a> &#8212; into <a href="http://www.dspace.org/" title="http://www.dspace.org/">DSpace</a> and one on the introduction of the <a href="http://www.duraspace.org/duracloud.php" title="NOW AVAILABLE: DuraCloud Open Source 0.7 | Duraspace">DuraCloud</a> service and code.<br /><span id="more-2943"></span><br /><h2>DSpace and the Spring Framework</h2><br />The Spring-Framework-in-DSpace was presented by <a href="https://profiles.google.com/mdiggory/about">Mark Diggory of @MIRE</a>.  He spoke from a DuraSpace wiki page set up as a <a href="https://wiki.duraspace.org/display/DSPACE/DSpace+Spring+Services+Tutorial">tutorial</a> on the topic.  In the first part of his presentation he introduced the inversion-of-control pattern, explaining why it is useful and showing how it works with simple code examples.  He then showed how a Spring-based ServiceManager can be integrated into the DSpace main code and then how new services can be plugged into that manager.</p><p>I came into the session more familiar with the Spring Framework than with the DSpace code, so I found the session to be a good introduction to some of the DSpace concepts even though I wasn&#8217;t the target audience.  (I imagine the target audience was someone familiar with the DSpace code wanting to learn about the Spring Framework.)  Thanks, Mark, for putting up the web tutorial and walking through it during the preconference session.</p><p><h2>DuraCloud Introduction</h2><br />The second preconference I went to was on the introduction of DuraCloud services from DuraSpace.  I can honestly say that I didn&#8217;t get what DuraCloud was supposed to be before, but seeing the about-to-be-released web interface I can say I think I finally get it.  DuraCloud is going to be both open source software and a service from DuraSpace that can back up a repository with storage, media access services, and compute/transformation services.</p><p>The session showed the web-based administration interface and the supporting tools for integrating a DSpace repository and a Fedora repository into DuraCloud.  Attendees were also given access to a command-line Java application that could be used to upload content into a DuraCloud instance, although sadly it wasn&#8217;t demonstrated during the preconference session.  (Perhaps I&#8217;ll try it out on the sly later with the DuraCloud credentials they gave us at the session&#8230;)  In addition to the functinality being built into DSpace and Fedora there will be REST-based code libraries for Java, PHP and Python &#8212; meaning that any developer could write code to make use of DuraCloud with any repository platform.  The whole DuraCloud application is going to be released into open source under the Apache 2.0 license as part of the efforts to create a community using the code and encourage others to write new services for DuraCloud.  This is something I&#8217;m going to keep watching; I&#8217;ve already signed up for a preview account for when the beta is released later this month.</p><p>Thanks also to DuraSpace for sponsoring the evening reception after the preconfernce session at the University of Texas Club.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/or11-report-1/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Picking a Java Web Application Framework</title><link>http://dltj.org/article/java-framework/</link> <comments>http://dltj.org/article/java-framework/#comments</comments> <pubDate>Wed, 25 Oct 2006 15:16:21 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[DRC]]></category> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[ejb3]]></category> <category><![CDATA[java]]></category> <category><![CDATA[programming]]></category> <category><![CDATA[seam]]></category> <category><![CDATA[spring framework]]></category><guid isPermaLink="false">http://dltj.org/2006/10/java-framework/</guid> <description><![CDATA[We&#8217;re beginning a new phase of our digital library development at OhioLINK and an oversimplification of one of the consequences of this new phase is that we will be developing more software from scratch rather than adapting stuff that we &#8230; <a href="http://dltj.org/article/java-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2006/10/java-framework/"></abbr><p>We&#8217;re beginning a new phase of our digital library development at OhioLINK and an oversimplification of one of the consequences of this new phase is that we will be developing more software from scratch rather than adapting stuff that we find out there on the net.  (Another consequence of this new phase is our interest in <a href="http://dltj.org/tag/librarysoa">applying the Service-Oriented Architecture paradigm to library applications</a>.)  In previous phases, we were somewhat at the mercy of whatever development framework was used in the application we were adopting.  As we start this new development where we control more of our own destiny, we wanted to take a step back and look at the available frameworks to support our development efforts.  The options we identified at the start were plain Java servlets, Apache Struts, Spring Framework, and EJB3 with JBoss SEAM.</p><p>Our analysis is admittedly by proxy rather than through direct experience.  If we had more time, we would start our new phase in each one of these (with the associated learning curve for some of them) and pick the one that worked out the best.  We have neither the luxury of time nor of excess developer talent, so we looked at what others were saying, created some sample applications, and discussed our gut reactions to each option.  In the end, we decided to start with EJB3/SEAM.</p><p><h2>Summary of Options</h2></p><p>Over the years, the Java community has developed frameworks to support the creation of applications in the Java programming language.  These frameworks consist of a combination of code libraries, programming rules, and best practices that have evolved based on the research and experience of the developer community.  Just as almost no one designs, codes, debugs, and documents their own low-level file I/O libraries any more, these frameworks provide a level of abstraction over the raw programming language that enables developers to create better code faster.</p><p>Within the web application arena, arguably the earliest successful framework was Apache Struts.  It was one of the first frameworks to promote a <em>Model-View-Controller</em> (MVC) architecture: the <em>Model</em> represents the business or database code, the <em>View</em> represents the page design code, and the <em>Controller</em> represents the navigational code.  By creating these three layers, Struts promoted a practice of design and development away from commingling database code, page design code, and control flow code in the same JavaServer Pages files.  In practice it was found that unless these three concerns are separated, larger applications become difficult to maintain.</p><p>The latest revolution in design architectures is Dependency Injection (DI).  Sometimes also referred to as Inversion of Control (or IoC), it is a programming design pattern and architectural model in which the responsibility for object creation and object linking is removed from the code of the objects themselves.  As the term &#8220;Dependency Injection&#8221; may imply, it is the <em>framework</em> that instantiates the component objects and binds them to each other through the use of setters and/or constructors rather than the components linking themselves together.  In this pattern, the objects themselves become loosely coupled, allowing for a more dynamic and testable integration of the component objects.  The creation and binding of objects is defined in an XML configuration file (Spring Framework) or via Java Annotations (EJB3).</p><p>Two primary frameworks have emerged for the Dependency Injection paradigm:  Spring Framework and EJB3.  The Spring Framework is the grandparent of subsequent IoC efforts (including EJB3).  A <i>de facto</i> standard, it is widely used in the Java programming community with a large number of tools and documentation.  EJB3 is a formal specification adopted by participants in the Java Community Process for standardizing Java-related developments.  Coupled with the JBoss SEAM framework, the EJB3/SEAM combination is roughly on par with raw technical capabilities of the Spring Framework.  SEAM removes some of the complexity of raw EJB3 by providing and preconfiguring popular choices for views (JSF) and models (Hibernate) as well as integrated AJAX-based Remoting and jPBM.  Both promote the same MVC architecture as Struts.</p><p>The distinguishing characteristics are that Spring acts as an open integration tool at the expense of a complicated XML-based configuration process whereas EJB3/SEAM is simpler in its configuration and more restrictive in what other tools can be easily brought into the framework.  In other words, Spring has a wide array of choices for the various framework components and for the most part the developer must manage the integration; EJB3/SEAM lessens the complexity of the framework by limiting the choices available for the various components to only the most popular options.  Note that there is overlap between Spring and EJB3; the Pitchfork project allows for JSR-250 (Common Annotations) dependency injection and EJB 3.0 style interception as an add-on to the Spring framework.  One should also note that a full EJB3 implementation is a kind of superset to SEAM, and if the needs of our applications go beyond that of SEAM it is possible to reduce our dependency on the SEAM framework by beginning to integrate other choices (and managing that integration ourselves).</p><p>OhioLINK staff would have a learning curve associated with both Spring and EJB3/SEAM (and Apache Struts as well, although it has been discounted as an option as a mostly dead-end architecture at this point).  On the question of whether the learning curve is greater than the effort of doing things the &#8220;plain Java&#8221; way, one can point to the large number of developers who have made the leap to these frameworks and are arguably more productive for doing so.  Since we are beginning the development of a new code base, it seems to be the ideal time to start up that learning curve with the creation and deployment of a new service.  The learning curve might be easier for Spring than for EJB3/SEAM due to the wide variety of materials already produced for Spring, although the corporate backers of EJB3/SEAM seem to be filling this gap at a steady pace.  The learning curve for EJB3/SEAM may be shallower, though, because SEAM simplifies the configuration of the framework itself.</p><p>At our development team meeting yesterday, we decided that <strong>OhioLINK will adopt a Dependency Injection (DI) paradigm</strong> over use of Apache Struts and plain Java servlets because of the anticipated large productivity gains after the learning curve.  Of the two DI/IoP frameworks widely available now, we <strong>decided to adopt EJB3 coupled with JBoss SEAM</strong>.  The standards-driven nature of EJB3 reduces the risk of adopting a technology that may not be supported in the medium-term.  It is expected that JBoss SEAM will flatten the learning curve to make EJB3 more readily understood in the short term while providing a migration path to a broader EJB3 implementation (beyond the capabilities of SEAM) if needed in the future.  The Spring Framework, to its credit, also makes it possible to envelop EJB3 objects as part of a Spring-based application, which could smooth the transition to that framework should it become necessary.  We also understand that there is some risk of &#8220;vendor lock-in&#8221; by relying on JBoss SEAM &mdash; in our limited experience, applications seemed to deploy better under JBoss Application Server as opposed to a stock Apache Tomcat 5.5 installation.  On the other hand (if the &#8220;standards&#8221; nature of EJB3 is to be trusted), it should be possible to move our code to other application servers, leaving SEAM behind, with minimal changes.  We may also be able to further flatten the learning curve by buying a support contract with JBoss in the short- to medium-term.</p><p><h2>Details about the Candidates</h2></p><p><h3>Enterprise Java Beans 3 (EJB3)</h3></p><blockquote><p>The EJB 3.0 framework is a standard framework defined by the Java Community Process (JCP) and supported by all major J2EE vendors.  [The architecture of the Spring framework is based upon the Dependency Injection (DI) design pattern.]  Open source and commercial implementations of EJB 3.0 specifications are already available from JBoss and Oracle. EJB 3.0 makes heavy use of Java annotations.</p></blockquote><ul><li>Based on standards work (the Java Community Process)</li><li>&#8220;Configuration by default&#8221; using Java Annotations backed by more complicated XML configuration files, if needed</li><li>A more compact, rigidly-defined framework stack; easier configuration, but fewer choices</li><li>Brand new (recently ratified); fewer tools, books, tutorials available</li></ul><p><h3>JBoss SEAM</h3></p><blockquote><p>JBoss Seam is a powerful new application framework to build next generation Web 2.0 applications by unifying and integrating popular service oriented architecture (SOA) technologies like AJAX, Java Server Faces (JSF), Enterprise Java Beans (EJB3), Java Portlets and Business Process Management (BPM) and workflow.</p><p>Seam has been designed from the ground up to eliminate complexity at the architecture and the API level. It enables developers to assemble complex web applications with simple annotated Plain Old Java Objects (POJOs), componentized UI widgets and very little XML. The simplicity of Seam 1.0 will enable easy integration with the JBoss Enterprise Service Bus (ESB) and Java Business Integration (JBI) in the future.</p></blockquote><ul><li>Based on EJB3</li><li>Integrates together some of the most widely adopted components such as JavaServer Faces and Hibernate</li><li>Can reportedly be used outside of JBoss Application Server (direct experience show some problems with this)</li></ul><p><h3>Spring Framework</h3></p><blockquote><p>The Spring framework is a popular but non-standard open source framework. It is primarily developed by and controlled by Interface21 Inc. The architecture of the Spring framework is based upon the Dependency Injection (DI) design pattern. Spring can work standalone or with existing application servers and makes heavy use of XML configuration files.</p></blockquote><ul><li>Explicit configuration via XML file</li><li>More flexible than EJB3/SEAM in swapping in and out various modules; yet the decisions made early on limit the ability to swap in and out later.</li><li>Several years old; widely available tools, books, tutorials</li><li><i>De facto</i> standard of an open source community with benevolent control by a corporate entity.</li></ul><p><h3>Apache Struts</h3></p><blockquote><p>Apache Struts is a free open-source framework for creating Java web applications.</p></blockquote><ul><li>(Summary opinion) Generally seen as a deprecated framework; few new projects start with Struts.</li><li>Weak integration of new techniques such as AJAX.</li></ul><p><h3>Plain Java Servlet (No Framework)</h3></p><ul><li>Must build the entire application support layer (object data storage, presentation interfaces, helper functions, etc. from scratch).</li><li>No ready-made integration of new techniques such as AJAX.</li></ul><p><h2>Background Information</h2></p><ul><li><a href="http://www.devx.com/Java/Article/32314/1954?pf=true" title="Make the Right Decision with Our Side-by-Side Comparison of Spring and EJB 3.0">Make the Right Decision with Our Side-by-Side Comparison of Spring and EJB 3.0</a></li><li><a href="http://www.devx.com/Java/Article/32447/1954?pf=true" title="Make the Right Decision with Our Side-by-Side Comparison of Spring and EJB 3.0, Part 2">Make the Right Decision with Our Side-by-Side Comparison of Spring and EJB 3.0, Part 2</a></li><li><a href="http://www.devx.com/Java/Article/31327/1954?pf=true" title="Discover Seam and Sew Up Your Java Projects Faster than Ever">Discover Seam and Sew Up Your Java Projects Faster than Ever</a></li><li><a href="http://en.wikipedia.org/wiki/Dependency_injection" title="http://en.wikipedia.org/wiki/Dependency_injection">Dependency injection &#8211; Wikipedia, the free encyclopedia</a></li><li><a href="http://www.springsource.com/products/pitchfork/pitchfork-faq" title="Pitchfork FAQ<br /> &mdash;<br /> Interface21.com">Pitchfork project frequently asked questions</a></li><li><a href="http://weblogs.java.net/blog/bleonard/archive/2006/05/trying_out_jbos_2.html" title="Brian Leonard&#039;s Blog: Trying out JBoss&#039; Seam">Trying out JBoss&#8217; Seam (Brian Leonard&#8217;s Blog)</a></li><li><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossSeamGettingStartedGuide" title="JBoss.com - Wiki - JBossSeamGettingStartedGuide">SEAM Getting Started Guide</a></li><li><span class="removed_link" title="http://seam.demo.jboss.com/">JBOSS-based SEAM demonstration site</span></li></ul><p style="padding:0;margin:0;font-style:italic;" class="removed_link">The text was modified to remove a link to http://seam.demo.jboss.com/ on January 13th, 2011.</p><p style="padding:0;margin:0;font-style:italic;">The text was modified to update a link from http://interface21.com/pitchfork/pitchfork-faq.html to http://www.springsource.com/products/pitchfork/pitchfork-faq on January 19th, 2011.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/java-framework/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>Access Management and Provisioning Technology</title><link>http://dltj.org/article/access-management-and-provisioning-technology/</link> <comments>http://dltj.org/article/access-management-and-provisioning-technology/#comments</comments> <pubDate>Tue, 18 Jul 2006 19:21:41 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Fedora]]></category> <category><![CDATA[Library SOA]]></category> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[acegi]]></category> <category><![CDATA[grouper]]></category> <category><![CDATA[internet2]]></category> <category><![CDATA[library service-oriented architecture]]></category> <category><![CDATA[nmi-edit]]></category> <category><![CDATA[provisioning]]></category> <category><![CDATA[Shibboleth]]></category> <category><![CDATA[signet]]></category> <category><![CDATA[spring framework]]></category> <category><![CDATA[xacml]]></category><guid isPermaLink="false">http://dltj.org/2006/07/access-management-and-provisioning-technology/</guid> <description><![CDATA[Building on the shoulders of others &#8212; isn&#8217;t that how that quote goes? There has been a stack of printouts on my desk for a while now for various access management and service provisioning technologies. Rather than keep the paper, &#8230; <a href="http://dltj.org/article/access-management-and-provisioning-technology/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2006/07/access-management-and-provisioning-technology/"></abbr><p>Building on the shoulders of others &#8212; isn&#8217;t that how that quote goes?  There has been a stack of printouts on my desk for a while now for various access management and service provisioning technologies.  Rather than keep the paper, I&#8217;m putting the list here so I know how to get back to them if/when I need to.  (Of course, along the way if you&#8217;d like to comment on them or suggest others to look at, please feel free to do so in the comments.)  Note, too, that by listing them here I&#8217;m not proposing, or even sure if, all of these pieces come together to a coherent structure.</p><p><h2>Grouper &#8212; Internet2 Middleware</h2><br />&#8220;<a href="http://middleware.internet2.edu/dir/groups/grouper/" title="Grouper --- Internet2 Middleware">Grouper</a> is an open source toolkit for managing groups. It is designed to function as the core element of a common infrastructure for managing group information across integrated applications and repositories. Grouper combines multiple sources of group information, both automated and manual, in managing memberships and other group information in a Group Registry, a central information asset complementary to a site&#8217;s Person Registry.  Grouper manages two primary types of objects: groups and namespaces. Groups are created and named within a namespace. Group management authority can be limited &#8221;</p><p>Now at version 0.9, Grouper is part of a suite of tools from the <a href="http://www.nsf-middleware.org/" title="http://www.nsf-middleware.org/">NSF Middleware Initiative (NMI)</a> that supports &#8220;development, testing, and dissemination of architectures, software, and practices in the areas of identity and access management.&#8221;</p><p><h2>Signet &#8211; Internet2 Middleware</h2><br />&#8220;Core middleware services such as identity management, directory, and authentication provide a foundation for secure, manageable applications throughout an institution. Even with this foundation, as systems and applications proliferate it becomes more and more difficult to manage user access consistently and cost-effectively. [The <a href="http://middleware.internet2.edu/signet/" title="Signet - Internet2 Middleware">Signet] privilege management service</a> is a relatively new component of campus middleware that addresses this problem by providing centralized management of user privileges across a range of applications.  The benefits of this service include:  a standard user interface for privilege administrators; consistent, simplified policy definition, via roles and integration with core campus organizational data; improved visibility, understandability, and auditability of privilege information; and standard interfaces to other infrastructure services and to application systems to support integration.&#8221;</p><p>Now at version 1.01, released 29-Mar-2006.  Could this kind of provisioning service be used to generate XACML files to drive FEDORA?</p><p><h2>OASIS eXtensible Access Control Markup Language (XACML)</h2><br />&#8220;<a href="http://www.oasis-open.org/committees/xacml/" title="http://www.oasis-open.org/committees/xacml/">XACML</a> is expected to address fine grained control of authorized activities, the effect of characteristics of the access requestor, the protocol over which the request is made, authorization based on classes of activities, and content introspection (i.e. authorization based on both the requestor and potentially attribute values within the target where the values of the attributes may not be known to the policy writer). XACML is also expected to suggest a policy authorization model to guide implementers of the authorization mechanism.&#8221;</p><p><a href="http://sunxacml.sourceforge.net/" title="Sun&#039;s XACML Implementation">Sun&#8217;s XACML Implementation</a> (available at Sourceforge) is the access management engine embedded into the FEDORA repository.</p><p><h2>Acegi Security System for Spring</h2><br />&#8220;<a href="http://www.acegisecurity.org/" title="http://www.acegisecurity.org/" class="broken_link" rel="nofollow">Acegi Security</a> is a powerful, flexible security solution for enterprise software, with a particular emphasis on applications that use <a href="http://www.springframework.org/" title="Springframework.org">Spring</a>. Using Acegi Security provides your applications with comprehensive authentication, authorization, instance-based access control, channel security and human user detection capabilities.&#8221;</p><p>Release 1.0.0 came out in May 2006 after nearly two years of development.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/access-management-and-provisioning-technology/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Served from: dltj.org @ 2012-02-11 12:44:41 by W3 Total Cache -->
