Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Spring Web Flow and JSF

Keith Donald has a nice and long writeup on Spring Web Flow 1.0.3's stellar support for JSF:

One important area where our integration is growing is with the Java Server Faces (JSF) community. Beginning with Spring Web Flow 1.0.3, our JSF integration is on-par with what the Spring community expects, and delivers what JSF developers in the trenches need most. This blog will illustrate the integration enhancements to show you the difference Spring Web Flow is making for JSF developers.

One of the most interesting parts of the post is a few paragraphs down:

Basically, Web Flow solves every problem this pour soul experienced with JSF's basic navigation capabilities. As one of our leading users noted, Web Flow can be used as a complete replacement for JSF's default "forward-centric" navigation model.

It's also interesting to note that ideas from SWF could be incorporated into JSF 2.0:

I'd also like to take this opportunity to encourage those already using Spring Web Flow in a JSF environment to speak out about your experience?send me an email, leave a comment here, write an article on JSF central, tell leaders in the JSF community about your experience. Your real world experience can help influence the direction of the JSF 2.0 specification in a time where the specification lead has asked for community feedback. Interface21 has been extended an invitation from Ed Burns, the JSF specification lead, to be a part of the JSF 2.0 expert group, which is a recognition of Web Flow's contribution as an innovative JSF extension. We have accepted that invitation and are excited about helping channel whats proven to work in the area of navigation and state management on a general basis back into JSF 2.0, while continuing to chart new territory and remaining usable in any environment.

Are you using SWF with JSF? If so, have your experiences been good or bad? I'm sure Keith would love to hear about them either way.

I think it's interesting to note that both Interface21 and JBoss are doing a lot to build solutions to JSF's problems. Is there money to be made from supporting JSF? In reality, you have to like what both companies are doing: they're building solutions to overcome the shortcomings of JSF and they're contributing those solutions back to the community for free. Even cooler is the fact that both companies are trying to get their solutions into the next version of JSF. This benefits everyone as far as I'm concerned.

What about those of you using Spring Web Flow with Spring MVC or Struts? How is it working for you?

I recently integrated Spring Web Flow into my current project using the Spring Webflow Plugin. In the past, I've used SWF with Spring MVC and JSF, so the Struts 2 Plugin seemed a bit odd. I guess I'll know more once I start using it more.

This brings up a good question - do you think it's better to create a page flow (i.e. a shopping cart) without Spring Web Flow first, and then refactor? Or do you think it's easier to use SWF from the beginning? My gut feeling is to start w/o it because you may not need it. Then if you do need it, you'll understand the problems it solves. What are your thoughts?

Posted in Java at Apr 21 2007, 10:22:32 AM MDT 8 Comments

Acegi Security adds OpenID support to its sandbox

From the Acegi Security mailing list:

Thanks to the efforts of Robin Bramley; we now have a first draft of OpenID support in the sandbox. The code is mostly as-is from when Robin submitted sent it to me. I've done all the standard jalopy formatting of the code so it blends in and has the proper file headers.

I don't know how much this will help folks developing intranet applications, but it's pretty cool for those doing otherwise. Anyone want to take a stab getting OpenID working with Roller? It uses Acegi and supports SSO, so hopefully it won't be too difficult.

See Timothy M. O'Brien's writeup as well as Ray Krueger's for more information.

Posted in Java at Apr 20 2007, 11:33:17 AM MDT 4 Comments

UrlRewriteFilter changes license from GPL to BSD

It looks like Sanjiv won't need to worry about the UrlRewriteFilter and its license anymore. From the UrlRewrite mailing list yesterday:

Subject: License changed to BSD and code repository changed to Subversion

Hi,

Two major changes today:

- License changing to BSD (from GPL), this should allow wider adoption of UrlRewriteFilter. (this is effective as of 3.0.4 which will be released soon)

- Project hosting moved from java.net to http://code.google.com/p/urlrewritefilter/

Over the next few days urlrewrite.java.net and tuckey.org will be changed to mention this.

Cheers,
Paul.

Sweet - thanks Paul! I continue to use (and highly recommend) the UrlRewriteFilter on almost every project I work on.

Posted in Java at Apr 20 2007, 08:44:22 AM MDT 1 Comment

Subversion Hosting

Subversion Logo In years past, I never had much of a need for source control outside of open source projects I worked on. Now, as I create more and more training materials and presentations - it's essential. While I could host a Subversion repository myself, it doesn't seem like it's worth the hassle. I'd prefer to have it hosted (and backed up regularly) outside of my house. This week I'm looking to setup svn.raibledesigns.com.

I'm not really looking to get my own Linux box hosted somewhere. I pay around $60/month to KGB Internet for raibledesigns.com, demo.appfuse.org and appfuse.org. To get my own "managed" box is somewhere around $300/month. When I say "managed", I mean Contegix-style where I can say "install this", "do that" and they handle all the sys-admin for you. So all I'm looking for is a reasonable SVN hosting provider that'll give me 1-2 GB for a reasonable price. What's reasonable? I'd say $25-50 per month.

I did some googling and there's a lot of Subversion hosting providers. I e-mailed a few of them with my main question - "can I point my subdomain at your servers?" A few of them have gotten back to me, but now I'm curious to hear from folks using these services. Are you using a Subversion hosting provider for your business? If so, which one?

I'm more interested in bad reviews than good ones - but if you're happy with a service, I'd love to hear about it.

The cheapest one I found is SVNRepository.com. However, it's been an hour since I e-mailed them and I haven't had a response. Nevertheless, $10/month for 5 GB, unlimited repositories, Trac instances, etc. sounds pretty nice.

Update August 2, 2007: I ended up going with SVNRepository.com (Level Two - $6.95/month) and I've been very happy with them. I'm using them for Raible Designs' artifacts (presentations, training materials) so I don't use it on a daily basis - more like monthly.

Posted in Open Source at Apr 20 2007, 08:24:13 AM MDT 34 Comments

Upgrading to Ubuntu 7.0.4

You have to love how easy they make this.

Ubuntu Upgrade

The time doesn't seem accurate as it originally told me it'd be about an hour. Regardless, I love how easy it is to upgrade Ubuntu from one version to the next. I wish openSUSE had a similar feature.

Update - 3.5 hours later: This might take a while...

Ubuntu Upgrade - 4 hours later

Update - during FAC: It's failed twice now and left my OS in a corrupted state both times. I suspect the MADM (or whatever it's called) prompt at the end of the download. I've entered "all" and "none" and it's failed with both values. VMWare rocks - I'm so glad I didn't ruin a working system. I'll be sticking with 6.10 for a month or so.

... and Country Bry is right - calling it by it's code name vs. the version number is pretty cheesy. ;-)

Posted in Open Source at Apr 20 2007, 06:32:26 AM MDT 16 Comments

Pizza!

From Stephen O'Grady:

YouTube - MLB - A Fan throwing a pizza at another Fan
this was the game i was at, sorry i missed this; the best part comes when Remy and Orsillo start cracking up

Posted in General at Apr 19 2007, 11:51:53 AM MDT 1 Comment

We need to plugin in less, not more

From David Van Couvering's Blog:

I just returned from a week in Mexico, a wonderful time with my family where we lived very simply - food, rest, physical fun. No TV, no movies, no cell phones, no computers. Bright sunshine, beautiful beaches, very friendly people wherever we went.

Then I came home to San Francisco and straight to the Web 2.0 Expo. The contrast has been a bit disorienting. I don't think it's a surprise that my one year old son learned to say "Hi" in Mexico - people actually greeted him there and interacted with him. Here in the conference, on the BART train, on the street, we are all in our own world. We are on our laptops, our phones, our iPods.

The keynote talks at the Expo underscored again and again an undeniable trend: there is an ever growing explosion of the use of consumer devices and connecting to the Internet. The vast scales of data and connections we are looking at are almost impossible to imagine. The whole world is "getting connected." And those of us at the Expo are generally very excited, and see lots of opportunities to make money and and to build things that lots and lots of people will use.

But I feel a sadness when I find myself in this environment. I feel like I am losing something. I watch myself "plug in," and I feel like I am actually losing connection. I crave the open sky, the deep stillness and power of the ocean, of the smiles of people who said "Hi" to my son.

David makes some excellent points in this post. I often find that I get tied up in the virtual world of blogs and technology and forget that the real world is the one that really matters. If my computer died tomorrow and I gave it all up to help Julie remodel houses, I don't think I would lose a whole lot. In fact, I think I would be more in touch with reality and would likely strengthen friendships, rather than confuse people when I talk to them about what I do.

A commentor on David's blog says:

I am glad you discovered, or rediscovered, the beauty of simple things. It happens to many people almost every year, after vacations.

This is why I try to take at least 2 months of vacation each year. I've been doing it for around 5 years and I don't plan on changing that anytime soon. Sure, I have lots of opportunities to work my ass off, make a bunch of money and store it away for later. But that's no way to live - I want to enjoy life now and every day going forward. Sure, I'm saving money for my retirement, but I don't see the point in working like mad in hopes it'll payoff someday. Some folks say "do it while your kids are young." I think that's bullshit - there's no excuse for being a bad parent at any time in their lives.

Posted in General at Apr 18 2007, 10:35:52 AM MDT 4 Comments

Sonatype - a new company around Maven

From Jason van Zyl's Maven Diaries:

Sonatype Since my departure from Mergere I've been quietly and steadily working to help start a Maven related company that I'm proud to say I'm a part of. No grandiose launch, no marketing hype, no VCs, haven't talked to a single analyst, and we hope that you can actually understand what we do by looking at our website. The company's name is Sonatype and I'm finally happy with the people involved and the direction we're headed in. We are focused on facilitating the adoption of Maven through our partners network, providing training, and delivering Maven related products for software development.

Having two companies wrapped around Maven can't be a bad thing. However, let's hope Sonatype has some funding to pay folks to work on the project more, rather than other products that may or may not be successful.

Two things that could make this company very well liked in the open source community:

  • Clean up the Maven Repository: Add/delete/modify as requested by users. There's other projects using the repo now and even folks campaigning against Maven. If Maven folks are responsible for cleaning it up, they'll be heroes.
  • Provide repository statistics: A lot of open source projects like to track their download statistics. It's a metric for measuring success (in addition to mailing list traffic). If they move to a full Maven-based distribution model (like AppFuse is), there's no more statistics.

Are there other things you think Sonatype can do to make Maven easier to use and more successful?

Congrats to Neel, Jason, John, Kenney, Andrew, Eric and Eirik. I hope you succeed in your mission. I think w/o the VCs and the get-rich-quick folks, it should be a lot easier. Cash isn't always the key indicator of success - more often happiness and job satisfaction are.

Posted in Java at Apr 18 2007, 09:19:21 AM MDT Add a Comment

20 Things You Didn't Know You Could Do With Apache

Apache HTTP Server During my mod_rewrite adventures, I discovered an interesting presentation by Rich Bowen from last year's ApacheCon. It's titled "20 Things You Didn't Know You Could Do With Apache" and you can download the PDF. While writing this post, I found a couple of other interesting presentations that Rich wrote: Introduction to mod_rewrite and Apache 2.2 Rocks! Good stuff Rich - thanks for sharing.

Posted in The Web at Apr 17 2007, 07:46:11 PM MDT Add a Comment

OSCache vs. EhCache for Hibernate's 2nd Level Cache

Hibernate has a number of options for configuring its second level cache. For more information on configuring this, you might want to read John Ferguson Smart's article titled Speed Up Your Hibernate Applications with Second-Level Caching.

Up until today, I thought EhCache was the default cache provider, but apparently not anymore. From Hibernate's documentation:

Note that versions prior to 3.2 defaulted to use EhCache as the default cache provider; that is no longer the case as of 3.2.

So what's the default now? It can't be Hashtable since that's not for production use. I doubt it's OSCache since OSCache can't even get its patches into Hibernate. Looking through the release notes, I found out it's NoCacheProvider - seemingly because of an issue with EhCache:

Due to the upgrade to EhCache1.2 and its new non-singleton cache setup, we should no longer default the cache provider to be ehcache. Instead, default to NoCacheProvider.

That's reasonable I guess. EhCache added support for distributed caching in 1.2. It's a shame they didn't maintain backwards compatibility or they'd still be the default caching provider. Regardless, it doesn't matter who the default caching provider is because it's very easy to change it. Here's how it's configured on one of my projects:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
    <property name="hibernateProperties">
        <value>
            hibernate.dialect=${hibernate.dialect}
            hibernate.query.substitutions=true 'Y', false 'N'
            hibernate.cache.use_second_level_cache=true
            hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
        </value>
    </property>
</bean>

Of course, you can also configure it directly in hibernate.cfg.xml or a hibernate.properties file.

This leads me to the reason for this post:

What is the best 2nd level (clustered) cache to use for Hibernate?
I'm sure some folks will say Coherence, so let's narrow the question to what's the best open source option?

I've used OSCache in the past. It worked well, but it was kind of annoying that I had to patch Hibernate to make it work. The Hibernate folks say it's OSCache's fault, the OSCache guys say it's Hibernate's fault - so this issue will likely never get resolved. So what about EhCache? I don't know, I've only used it in a single JVM environment and haven't tried it in a clustered environment. Is there anyone using Hibernate + EhCache in production that can verify its effectiveness?

Of the options listed in Hibernate's documentation, the only other options seem to be JBoss TreeCache and SwarmCache. You can quickly eliminate SwarmCache since it never made it past 1.0 RC2 in October of 2003.

That leaves JBoss TreeCache, EhCache and OSCache as choices for a clusterable 2nd-level cache. OSCache is an invalidating cache, which definitely works - but might not work as you expect it to. JBoss Cache only seems to allow a replicated cache which also works. EhCache seems to support both. I don't know if invalidating or replicating is better, but I imagine replicating can get quite chatty if you're dealing with large amounts of data.

But wait - is there another open source option? According to Terracotta's CTO, Terracotta is much faster than JBoss Cache. However, if you read about it on DZone, you'll see that JBoss Cache has no "official" benchmarks.

So what's a developer to do? My current client likes OSCache, but I'm leaning towards EhCache. Which would you recommend?

Of course, if Coherence is only $1K per CPU, maybe that's the obvious choice? Unfortunately, I couldn't find their pricing using Google.

Posted in Java at Apr 17 2007, 01:59:27 PM MDT 14 Comments