Matt RaibleMatt Raible is a writer with a passion for software. 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.

AppFuse 1.2 Released!

This is primarily a bug fix release. Here are the details from the release notes:

  • Backed out Http Post for Remember Me. It was not redirecting user to the page they originally requested. Using reponse.sendRedirect does send the user to the proper location. Turned on password encryption (SHA) to protect any passwords that end up in log files. Turned off encryption in Tomcat.
  • Changed configuration parameters in servlet context to be in a hashmap.
  • Improvements to StrutsGen tool to generate list screen as well and to fill in more missing elements.
  • Changed to close Hibernate session when object not found in BaseDAOHibernate.
  • Fixed bug in UserAction.save: when creating a new user, role defaults to "tomcat" regardless of what the user chooses.
  • Dependent packages upgraded:
    • Hibernate 2.1.1
    • Struts Menu 2.1
    • WebTest Build 379

Download (~11.9 MB for src, ~4.3 MB for bin) or View Release Notes.

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

Posted in Java at Dec 21 2003, 08:07:27 AM MST

Struts Menu 2.1 Released!

This release is primarily a bug-fixing release, but I also added a couple of enhancements. The first is the variable substitution now uses JSTL, which means two things.

  • You must use a JSP 1.2 container and include the standard tag library in your project for this to work.
  • You can now use "dot" notation in your variables. For example, ${user.name} will now work.

Other enhancements include added support for standalone menus in the Explandable List Menu (no items, just a <Menu>) and highlighting of the last menu clicked.

List of Changes (from http://struts-menu.sourceforge.net/changes-report.html):

  • Changed dynamic variable feature to use JSTL's ExpressionEvaluator. To substitute request parameters, you must use ${param.paramName}, rather than just ${paramName}.
  • Fixed UseMenuDisplayerTag to allow config in menu-config.xml to override the default (as documented).
  • Fixed DisplayMenuTag to continue rendering menu items when Action or Forward lookups fail.
  • Added support for highlighting the last menu selected in the Expandable Menu.
  • Added support for standalone links/menus (no children) to Expandable Menu.
  • Added struts-menu.tld to the binary distribution.

A complete CVS changelog can be found at: http://struts-menu.sourceforge.net/changelog-report.html.

Demo: http://raibledesigns.com/struts-menu
Download: http://tinyurl.com/2aq6k

I realize the JSTL stuff could backfire if users are stuck on an old container. Hopefully, you can simply continue using 2.0 if that's your situation.

Posted in Java at Dec 20 2003, 08:34:56 AM MST 1 Comment

JSF 1.0 - Proposed Final Draft Spec and Beta Reference Implementation

From Craig McClanahan on the struts-dev mailing list:

I'm pleased to announce that the Proposed Final Draft version of the JavaServer Faces 1.0 Specification, and a corresponding Beta release of the Reference Implementation, is now available at:

http://java.sun.com/j2ee/javaserverfaces/download.html

Please send any feedback and comments strictly about JavaServer Faces to [email protected].

I'm also finishing up an update to the Struts-Faces Integration Library, and will be making it available (via nightly builds) very soon. Feel free to ask any questions about how to use Struts and JavaServer Faces here on the STRUTS-USER list.

Sweet! It's almost time to try JSF in a webapp. I'd love to offer a web layer for AppFuse in JSF. But then again, I'd like to offer WW2 and Tapestry options too. I just need to figure out how to give the developer that option when building. The main problem is it'd probably be a pain in the ass to maintain all 4 implementations. But then again, that's what unit tests are for!

In other news, a nice patch has been proposed for the DisplayTag that would give it JSTL's EL support.

Posted in Java at Dec 20 2003, 05:40:02 AM MST 1 Comment

Stop Tomcat from persisting sessions

I can't seem to find the blog post about how to disable Session persistence for a given <Context>. Anyone got a link?

Posted in Java at Dec 18 2003, 09:49:38 PM MST 2 Comments

[ANNOUNCE] Ant 1.6 Released!

Big news baby - the best Java tool in the world has a new release. I don't know that I'll use any of the new features (such as antlib, macrodef, presetdef, ssh tasks), but I do love to upgrade. Downloading now...

Later: It looks like Canoo's WebTest is not compatible with Ant 1.6. Reverting back to 1.5.4.

C:\Source\appfuse\test\web\web-tests.xml:29: Task must be of type "Step": invoke at 
C:\Source\appfuse\test\web\login.xml:1:  is of type org.apache.tools.ant.UnknownElement

Line 29 is: <canoo name="login">. I've notified the webtest mailing list, hopefully there will be a resolution shortly.

Posted in Java at Dec 18 2003, 08:17:01 PM MST 3 Comments

Interested in Java ISP Options

I'm not exactly looking for a new ISP, but I am interested in exploring my options. I'm currently averaging about 10 GB of bandwidth usage per month, and it's unlikely to go down. I only pay around $50/month, so it's not bad, but I wouldn't mind some more RAM. I don't want to administer the server per say - I'd like backups and e-mail setup/config done for me. I don't think I want my own server b/c I don't want to be a sysadmin - I only want to worry about the Java server setup. Below is my ideal setup - please let me know if you think there's other things I should be looking for.

  • Linux
  • 512 MB RAM
  • 1 GB disk space
  • A Fat Pipe (100 MB+)
  • 25-50 GB traffic
  • Tomcat or Resin (Servlet 2.3 and JSP 1.2 at a minimum)
  • MySQL databases (2-5)

Posted in Java at Dec 18 2003, 02:09:30 PM MST 12 Comments

Struts 2.0

There's a flurry of e-mails about Struts 2.0 dancing around on the Struts Developers Mailing List. Looking at the Overview or the ReadMe, you can see that there's some major (revolutionary) changes being discussed. The Struts Bandwagon is alive and well. The proposal is called Jericho (since it tries to tear-down the walls within the Struts architecture) and proposes to open-up Struts by:

  • Declaring interfaces for all core components.
  • Providing working base implementations for all core components.
  • Encapsulating alll path references within "Location" objects (fka ActionForwards) and referring only to Locations from all other objects.
  • Providing additional extension points from core components so that the "Inversion of Control" pattern is fully realized. (e.g., a populate method for the FormHandler.)
  • Providing "POJO" signatures that encapsulate servlet/portlet behavior so that applications can be freed of servlet/portlet semantics, if so desired. This strategy would also be applied to optional packages like Validator and Tiles.
  • Retain optional access to servlet/portlet objects so that applications can be free to do whatever they need to do.

Also under consideration - adding Struts Menu to the core. Good stuff my friends, good stuff.

Also noticed on the mailing list - Tomcat is not the Servlet/JSP reference implementation (news to me):

There is a (mis)conception, for example, that Tomcat is the RI for the servlet and JSP APIs. That is not the case -- the official RI is the "J2EE SDK" available at http://java.sun.com/j2ee/1.4/download-dr.html. It happens to *include* code from Tomcat, but this is the real RI.

Posted in Java at Dec 18 2003, 11:24:32 AM MST 4 Comments

Hibernate's AdminApp - a demo of WW2 and Hibernate

After looking at Hibernate's AdminApp, as well as other WW2 apps - I've noticed something. WW2 developers don't seem to give a rats ass about referencing their POJOs in their Actions, or using Hibernate directly in their actions. At first glance, I think to myself, "boy that sure makes things easier." But then again - doesn't that tightly couple your web layer to your persistence layer?

I can understand the POJO reference in Actions - I'm about to give up on doing a parent/child relationship with Hibernate where the children are converted to ActionForms and then converted back (Hibernate loves to tell me "a different object with the same identifier value was already associated with the session: 1").

It would be SO much easier (with this particular problem) if I could just toss up POJOs to my view. The thought of importing "persistence.User" into my Action makes me cringe though. I don't know why, it just does. I need to get out of this patterns mindset I've been in for the last couple of years and get back to what really matters - simple, easy to learn, and fast to develop. I'm tired of banging my head against the wall with Struts and Hibernate.... I've been doing it for two days. It's not Hibernate, and it's not Struts, it's me... (thud, thud, thud).

Posted in Java at Dec 17 2003, 02:35:09 PM MST 15 Comments

RE: About having babies

I was going to leave a comment on Chris's site about his About having babies post, but I'm afraid I'll probably ramble on about this, so I might as well put it here.

I am a proud father of Abbie Loo, now 13 months old. I should probably preface this post with the fact that I've always wanted kids since I was one myself. I always had a knack for entertaining them and being their friend. Even in high school and college if there was a kid (under 5) at a party, I ended up playing with them over any adults. So when I met Julie, it was definitely something we discussed in the first few weeks of dating (we knew we would get married w/in two weeks of meeting). We both knew we wanted them, so it was just a matter of time after we got married.

Let's get to Chris's questions and my answers:

Would my spare time be so drastically reduced that I would no longer be able to work on open source?

I think it depends. Before Abbie was born, the earliest I ever got up was 6 a.m. Now I get up at 4 a.m. and sometimes stay up until 6 a.m. When I do this, it's always to code and it's about 50/50 open source vs. paid stuff. So, you'll still be able to work on open source, but you will have to sacrifice sleeping hours. In the first month that Abbie was born, I worked from home and got the Wrox deal - so I really had no concept of night or day. That's what got me on the 4 a.m. kick - and now I've found it works awesome for productivity-addiction.

Julie does yell at me a lot to "get off the computer" and "take care of your daughter!" She definitely does most of the work, and I feel my computer time is justified because I'm improving my skills to bring home more bacon. I'm not allowed to ever say I'm the one who pays for everything though, so I've never explained my justification. I guess I feel like Abbie won't remember this part of her life, so I can get away with it, but I'd better quit working so much in the next couple of years - it's not healthy.

Would we be able to travel?

This depends on you and your wife. Are you willing and ready to travel with a small child? Julie and I take Abbie everywhere and I think she's better behaved because of it. During the first year, Julie took her on an airplane every month and now she's an angel on the plane. If you're willing to put up with a crabby kid every once in a while on a plane, of course you can travel. They're not like dogs. ;-)

Do we really need any more babies?

No, but we do need more smart babies. Wouldn't you rather have your genes around to shape tomorrow rather than someone else's? Kids are the most rewarding thing in the world - some folks are addicted to it, which probably takes the coolness out of it. Two is good, if you have older friends without kids - they're the ones helping the problem. I know LOTS of folks without kids.

But then again there's the whole area of taking care of children with disabilities.

You sound like a chick - do you fear getting in your car because you might get in a car accident? ;-) I think depends a lot on your family history. If you have a history of disabled kids, you might want to think twice. Adopting is an excellent option - I've thought about doing it simply because I feel sorry for kids w/o parents.

Kids rock, no matter what anyone says. I've never laughed or smiled so much in my entire life before Abbie. We certainly don't have the night (drunk) life like we used to, but we certainly feel better about ourselves and the world. The coolest part is how close it brings your family together (husband/wife, parents, siblings).

And then you have Julie's Aunt and Uncle's opinion - party like a rock start until your late 30s, and then have kids. I prefer to party with my kids and I'd like to retire at 50, shortly after they leave. ;-D

Posted in General at Dec 17 2003, 12:00:32 PM MST 8 Comments

Eclipse Plugins on OS X and 3.0 M5

I did a bit of tinkering yesterday and today and finally got the Colorer plugin to work on OS X. From the Colorer Forums, you can now see how to build the colorer plugin for OS X and how to get the plugin working with Eclipse M5. I also discovered that the Lomboz plugin now supports M5 too (even on OS X!).

So, you ask, "What happened to using IDEA?" I do use it, but not as much as Eclipse. The main problem I have with IDEA is that I can't have more than one project open at a time. I typically copy code from AppFuse and it's just easier in Eclipse - I can even copy a whole class and it renames the package for me. And now that I've discovered the Ant View in Eclipse, they're pretty much equal to me. Another reason for targeting Eclipse is there's more users. Most of the folks that download AppFuse use Eclipse - so being aligned with the my "users" (all 6 of them) makes things much easier.

Posted in Java at Dec 17 2003, 08:33:07 AM MST 3 Comments