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.

Commons Validator 1.0.1 Released

This release contains only bug fixes - there are no new features in this release. You can download the binary or source distributions, or simply checkout the Validator web site. I expect that will be included with tonight's nightly build of Struts.

Posted in Java at Dec 15 2002, 05:14:43 PM MST Add a Comment

RE: Struts? WebWork? Tapestry? Cocoon?

Aslak tipped me off about Anthony's Wafer research project. There I found the feature matrix of all the web application frameworks they've looked at. I don't know when this matrix was last updated, but I question a few of the entries for Struts. In particular:

  • Template Languages - it supports Velocity and XML
  • Security - it supports adding a role attribute to your action-mappings to secure servlets, as well as roles in Tiles, Struts-Menu and the logic:present tag library to limit access when using container-managed security. I'm guessing that they mean a different type of security here.
  • Documentation - Apache doesn't host an online demo, but I've seen many, for instance my strutscx demo [strutscx home]. There's also the stxx project. I'm guessing the development team has to host one to fit the satisfy the requirement here. It does have a number of tutorials though, including my favorite Strut By Strut. Example code is all over the place, O'Reilly has been pumping out a lot of it lately.
  • IDE Integration - Easy Struts and the Struts Console.
  • WAP/WML - The Struts WML Tag Library.

I hope this helps to boost Struts' credibility on this matrix. I'm off to Barnes and Nobles to write some more on Tiles and Exception Handling with Struts. It's open 9-11 everyday and all the local libraries closed at 5 today. I'm about halfway through the chapter (page 15). Tomorrow will be fun-filled with a full day at the library and hopefully I will finish. Then an all-nighter (maybe? I hope not) on Monday night to proofread, and then send on Tuesday. I doubt I can get my struts-resume app done by Tuesday night, so I'll probably turn that in later in the week. Although, using XDoclet, Hibernate and Erik's StrutsGen tool, I might just be able to pump the whole app out in a couple of hours!

Posted in Java at Dec 15 2002, 02:33:37 PM MST Add a Comment

Tomcat Deployment App

On of my clients has asked me to setup a deployment app. Basically, we have seven instances of tomcat setup through one Apache webserver. Apache proxies to each instance based on different domain name. They want the ability to upgrade each instance with the click of a button. Here's my idea:

  • Create a Struts-based app that allows file upload, where they can upload a war file.
  • Part of the file-upload process is selecting which servers they'd like to upgrade.
  • Based on the server names, the war file is copied and expanded in the tomcat/webapps/appname directory for each server.

Will this work, and can I do this through a webapp? It'd be cool to do steps 1 and 2 with a webapp and have step 3 run by Ant. Is it possible for a webapp to call Ant? The second piece that they're probably going to want is the ability to setup these virtual slices on the fly, from a web page as well. That might be a little tougher, as it would involve: editing http.conf/workers.properties, creating a new user for the slice, copying/expanding a base Tomcat install, editing the server.xml for new ports, creating a new MySQL instance for the slice, and finally, creating startup scripts. Yeah, I might have to pass on creating that app - probably not logical to do it from a webapp. Especially when it only takes about 10 minutes to setup right now.

Posted in Java at Dec 15 2002, 07:17:58 AM MST 4 Comments

Norton Internet Security - for 5 bucks!

Saw this on Amazon.com today. YOu can get Norton Internet Security for a measly $5 after rebates - now that's a deal! The shipping will probably cost you more. A good gift for your techy friends that use Windows.

Posted in The Web at Dec 14 2002, 05:44:44 AM MST 1 Comment

Jabber Journal #5

Jabber Journal #5 was published yesterday. If you ever have a need to host an IM server, Jabber is the way to go. Pretty damn easy to setup and I'm guessing easy to talk to as well - it's just XML. I bought Programming Jabber a couple months back, but haven't used it yet. Jabber registers users by creating an XML file in it's directory - so it'd be pretty easy to create new jabber users when someone creates a new user in the database, and then you could dole out a jabber id for them as well.

Posted in Java at Dec 14 2002, 05:41:13 AM MST Add a Comment

Should I be using DBUnit?

Here's a question for you: Should I be using DBUnit in AppFuse and struts-resume? I've heard of it before, but have never used it. It sounds good:

The Dbunit database testing framework is a JUnit extension which sets up your database in a known state before executing your tests. This framework uses xml datasets (collection of data tables) and performs database operations before and after each test. The Dbunit framework supports both the clean insert and the refresh strategies.

Actually, know that I think of it, of course I should be! Currently, I use an Ant Sql task to create my database, and then Hibernate's SchemaExport class to create the tables. I have no way to automagically enter data into the database. I suppose I could use another sql task in my build file, but it sounds like this job is more suited for DBUnit. I don't want to give up Hibernate's table generation as it's smart and adds new columns when I add new columns to my VO. Hopefully these two can work together nicely.

I also found this Best Practices guide on using Hibernate. The first line about using fine-grained objects has motivated me to refactor my User class.

Write fine-grained classes and map them using <component> or <component-element>. Use an Address class to encapsulate street, suburb, state, postcode. This encourages code reuse and simplifies refactoring.

Posted in Java at Dec 14 2002, 01:37:09 AM MST Add a Comment

Maven and CVS Repositories

As I woke up this morning, I thought "Maven must have a way to checkout development builds from CVS." So I think I can still use it and get all my needed 3rd-party jars. They all have CVS Repositories and most are hosted by Jakarta or Sourceforge. Now I just have to figure out how to do that.

Posted in Java at Dec 14 2002, 01:08:41 AM MST 2 Comments

New Job, Struts, Testing Frameworks and Maven

I found out this afternoon that they want me for the job I interviewed for yesterday. I'm expecting to start on Wednesday. It's a small team of 3 folks and should be a lot of fun. I'm really looking forward to getting back into an office environment where I can converse with co-workers and such. After blogging for the last few months, I feel like the java.blogs guys are my co-workers, but it's still fun to talk and interact with folks. I never used to like it - I'd bring my lunch to work everyday, and hunker down like a code monkey the whole time - just trying to get my 8 hours in and get outa there. I'd get annoyed when people would stop to talk about their weekend or other random stuff. Now I'm going to be that guy - I'd better watch for the telltale signs of get the hell out of my cube! I wonder if we'll even have cubes? The floor where my interview was had just cleared out a bunch of folks - it was empty when I went in there. When I say cleared out, you know what I mean. Needless to say, there is plenty of space and plenty of computers available -- it'll be interesting to see what I get.

My last project had horrible machines - NT4 Gateways with 4MB video cards and about 700 Mhz. And this was last year!! I had just bought a brand new Dell 8100 P4 1.5 Ghz 2 weeks before I started the gig - so you can imagine my disappointment. And I was running XP at the time, albeit a beta version. But still, I felt like I was taking a huge step back in time. So I brought in my own Windows 2000 CD on my 8th day on the job. It all looked to be going pretty smooth (and the install was about to finish around 7 a.m. - I got there at 5) when everyone started rolling in. The video drivers weren't compatible and I was forced to humbly call tech support and tell that how I had violated all the rules. This place at least has Windows 2000, and I have my Powerbook, so all should be good. I just hope I can get a dual monitor setup - there's nothing quite so enjoyable.

This evening I did some minimal development on AppFuse. I spent most of the day writing the Struts Chapter. I'm on page 12 and expect to do 10-20 more pages. It was fun writing because I described tools that make developing Struts apps easier: Ant, XDoclet, JUnit, StrutsTestCase, and Cactus among others. I dug in a little to the Testing frameworks and played with them, but nothing too serious. I can waste many hours coding and I need to finish writing, then code later. I used 2 very cool tools today. The first is Canoo's WebTest. It basically is a framework built on top of HttpUnit that allows you to write all your tests as Ant tasks. It's fricken sweet as you don't have to really write any code, and it just worked for me. Check out this file (XML) to see how easy it is.

The 2nd tool was written by Erik Hatcher to generate JSPs and a resource bundle based on a Struts ActionForm. I hadn't tried it out until tonight and it just worked - my favorite feature in any software. The one area I think I might run into issues (in generating all this code), is when I have ArrayLists of beans on a form. I think Hibernate will allow this using Sets, Lists and other types of Collections, but I'm doubting that XDoclet's strutsform task will support it and I don't think Erik's too; generates nested tag libraries or anything like that. This is unfortunate because I'll probably get a wild hair up my you-know-what and want to create this functionality. And there goes my deadline, right out the window. Need.... to ... stay ... focused..!

Lastly, I made an attempt to mavenize AppFuse. It was pretty easy at first, as you're only required to alter this XML file to fit your project's needs. I realized I didn't have much as far as a CVS repository, mailing lists, etc., but I also realized that these would be almost essential to any project. And they'd certainly make things a lot simpler - even on a small team. When I got to the dependency section (which is what I really need), I sorta gave up. Here's my dependencies and their presence at the Maven Repository:

So while Maven looks great, it doesn't offer all the third-party jars I need. Is it possible to partially integrate? Also, I found the documentation to be a bit lacking on how exactly to configure each dependency. Is there a standard naming convention or versioning to rely on? It'd be great to have a list and possible versions - or even XML fragments you can copy/past. Can we, as developers, contribute nightly builds to the repository? I'd love to use both AppFuse and Maven at my new project, but I hate waiting on things to happen. If I can do anything to make the above modules/versions present in Maven, let me know.

Posted in Java at Dec 13 2002, 06:23:07 PM MST 1 Comment

JBoss and J2EE Certification

I don't know if you've read this article that says JBoss is going to develop an open source implementation of J2EE 1.4. Of course, they already did this with 1.3, they just never got J2EE Certified, so they were unable to claim this. The interesting part about this article is that Marc Fleury said (on Wednesday night) that he never said a word of what was published in the article. Furthermore, he and the JBoss group has no interest in becoming J2EE certified, especially because of the $300,000 price tag. However, after the article was written, and received all this press from it - he is now going to get certified. How ironic is that?!

Posted in Java at Dec 13 2002, 05:55:47 PM MST Add a Comment

A Christmas Tree

I've added a Christmas Tree to this site to decorate a little for the holidays. Hope you don't mind. Like all new additions, I had to make room for it and adjust some margins so it didn't hide behind anything. Feel free to steal it if you like. The CSS to make it a background is available with a good ol' Ctrl+U. You should be glad this is all I did - the first one I tried was animated... Happy Holidaze! Merry Christmas!

Posted in The Web at Dec 13 2002, 11:34:49 AM MST Add a Comment