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.
You searched this site for "java". 1,588 entries found.

You can also try this same search on Google.

Struts 1.2.0 Test Build Available

From the struts-dev mailing list:

The Struts 1.2.0 Test Build is now available here:

http://www.apache.org/~martinc/struts/v1.2.0/

This is the first Struts build being made available following the same
test-and-release process that has been used successfully by the Tomcat
team for some time. It is *not* an official Apache release.

Once feedback has been collected on the stability and general quality of
this build, a determination will be made as to whether it should be
promoted to Alpha status.

You can reference the Struts site for a list of what's changed since 1.1. To further assist you (if you're upgrading from 1.1), you might want to check out how I did it back in October. I tested this build with AppFuse and all tests pass - I didn't even have to change a single line of code. For that reason, this is now the Struts version that'll ship with AppFuse 1.4.

Posted in Java at Feb 27 2004, 09:06:43 AM MST Add a Comment

No Fluff Just Stuff

I had lunch today with Jay Zimmerman of No Fluff Just Stuff. I always enjoy getting together with Jay because he's from Montana and Montanans are generally nice folks. Among other things, he asked if I would be interested in speaking at a NFJS event or two. I said I'd think about it. However, I'm strongly considering it since it would probably be a good marketing tool.

I probably wouldn't do any events until sometime this summer. Now I just have to figure out what I'd speak on...

Posted in Java at Feb 26 2004, 01:46:06 PM MST 6 Comments

Supporting OGNL in Tag Libraries

Adding support for JSTL's Expression Language was fairly easy to do in the Display Tag. It was as simple as adding an ExpressionEvaluator and subclassing the ColumnTag and the TableTag. From there, all that was needed was needed a new TLD to reference these new classes.

So the question is - would it be just as easy to support the OGNL Expression Language? Does it have an ExpressionEvaluator I can write with the same simplicity as the JSTL version? If I could figure that out, I think creating OGNL-aware versions of the displaytag and struts-menu would be a piece of cake. All you'd need to do would be to change you're TLD's URI and you'd be off to the races!

Posted in Java at Feb 25 2004, 10:43:08 AM MST 3 Comments

How do you get around Struts' single inheritence model?

Adrian Lanning sent me an interesting e-mail yesterday. He's looking for a better way to extend Struts. I thought I'd post his message here and see if anyone has ideas.

I am a big struts fan and use it for my projects but I think there is something fundamentally wrong with the design. The real crux of the matter may be that Java is a single-inheritance model and Struts is designed more for multiple-inheritance.

Example 1.
Complexity when trying to use "extensions" to struts that have their own RequestProcessors. Such as my extension for roles (mentioned below) used together with Asqdotcom's ActionPlugin which is a plugin but still uses its own RequestProcessor, plus another hypothetical extension which has it's own RequestProcessor. Basically the only way to use them all is to modify the source of one or two to extend the others which doesn't seem like a good design.

Example 2.
Extending LookupDispatchAction to include per-method validation (set in struts-config.xml). Basically same problem. Need to combine functionality of ValidatorAction and LookupDispatchAction but can't extend from both. Have to modify source. Actually Brandon Goodin wrote this already (I find it very useful). It's called ValidatorLookupDispatchAction.

I know this is a common issue with single-inheritence models/languages. It would be really easy to extend Struts in a multiple-inheritance model.

* THE POINT *
I was just wondering if you knew of a better way to design when dealing with single-inheritance models to avoid problems such as these.

Personally, I don't find the need to extend Struts that much, so this is not much of an issue for me. I think Struts 2.0 will solve many of Struts single-inheritance design by declaring interfaces for all core components. I wonder when 2.0 is roadmapped to ship - sometime in 2006? ;-)

Later: The article, Security in Struts: User Delegation Made Possible, by Werner Ramaeker provides a good example of a Struts extension strategy.

Posted in Java at Feb 25 2004, 04:00:05 AM MST 23 Comments

Upgraded to Tomcat 5.0.19 + thoughts on Resin

I spent 5 minutes tonight and upgraded this site to use Tomcat 5.0.19. Everything seems to be working fine, save for a couple of new messages in catalina.out:

24-Feb-2004 7:48:34 PM org.apache.jk.common.HandlerRequest decodeRequest
WARNING: Error registering request
24-Feb-2004 7:48:44 PM org.apache.jk.common.HandlerRequest invoke
INFO: Unknown message 0

After talking with Rick last weekend, I'm going to try and migrate to Resin as my main dev appserver. The motivating factor was hearing Resin and Orion are so much faster than Tomcat. Sure I've heard this many times before, but mostly from Jakarta-haters. Rick's opinion holds a bit more water for me. Of course, he mentioned that his findings where based on Resin 2.x and Tomcat 4.x. I'd love to see a performance comparison between the latest versions of Orion, Resin and Tomcat.

I hope to modify AppFuse so it can easily run with Tomcat or Resin with a simple property switch. I've already started that process, but I hit a small snag.

I also hope to migrate this site to Resin 3.x soon. If nothing else, it'd be nice to learn more about Resin - and we all know the best way to learn a new technology is to interact with it on a daily basis.

Posted in Java at Feb 24 2004, 08:01:10 PM MST 11 Comments

Spring 1.0 will support iBATIS 2.0

According to this post on the Spring forums, Juergen has just added support for iBATIS SQL Maps 2.0. Very nice!

Posted in Java at Feb 24 2004, 05:49:41 PM MST 6 Comments

NYC: DisplayTag and Struts Menu

At the NYC Conference, I'm going to be talking about The Display Tag and Struts Menu. I figure the best presentations are ones that cover new features or introduce something new. So I'm hoping to add the following features to the two libraries in the next month. Please let me know if there are other's you'd really like to see - or ones that'd make the audience go *wow*.

DisplayTag: I'd like to add this pagination enhancement so you can get easy interaction between the records displayed and the records fetched. I'd also like to see sorting by property, not be contents. Lastly, I hope to add an example that does CRUD on a table using JSTL and simple checkbox and input fields.

Struts Menu: A lot of users are interested in seeing a menu that's created from a database table. This shouldn't be too difficult because examples are out there. I was also thinking of adding support for the Joust Outliner, but it doesn't look like it's still developer or actively used. If there's interest, I'll add it.

If you think I'm blogging a lot today (don't you work Raible?), it's because I'm on babysitting duty. Abbie is sick with a fever and Julie had to go to work - so my work day starts when she gets home. I've got the little one tied up with a little Winnie the Pooh action right now...

Later: The DHTML Kitchen has some nice menus, but they're not free. Anyone know of open source menus like these?

Posted in Java at Feb 24 2004, 02:41:26 PM MST 33 Comments

Speaking at MySQL User Conference

MySQL User Conference Speaker I've been accepted to present a 30 minute session on AppFuse at the MySQL User Conference in Orlando! I would have never thought to even apply, but Mark Matthews sent me an e-mail and convinced me to give it a shot. Now I'm pumped that I did. Here is the abstract for Easy Java Development with MySQL:

Using my open source AppFuse application, I will show how easy it is to setup a MySQL database using Ant, create the Tables using Hibernate/Ant and populate it using DBUnit.

Other events I'm speaking at in the next couple of months include a one-day conference in NYC on Developing Webapps using Open Source Tools and a Basic Concepts presentation on AppFuse at Denver's JUG in June.

Now the only question is - should I use PowerPoint/Keynote or enhance my simply preso app to write these presentations?

Posted in Java at Feb 24 2004, 11:45:40 AM MST 11 Comments

Java.net vs. SourceForge

I think it's about time I moved AppFuse from the Struts project on SourceForge to its own project. That way, I'll have more control over controlling spam on mailing lists, adding developers and other such stuff. So the question is - should I stick with SF or move to java.net? I'm fairly happy with SF, except for their recent CVS hiccup and regular CVS outages. It's cool that java.net gives you a wiki, but I doubt I'll convert all my JSPWiki wiki pages to java.net's wiki syntax (whatever it is). So I guess the question is for you folks that have used both (i.e. OpenSymphony developers): Is java.net better than SF?

Dave asked this same question in June of last year - and Roller still lives on SourceForge. I wonder if that's any indication?

Posted in Java at Feb 24 2004, 09:18:56 AM MST 6 Comments

Simplify your AppFuse Managers

I figured out a way to remove any ActionForm references from my Managers yesterday. It was pretty simple, but I thought others might benefit from this knowledge. Basically, you just need to add a couple methods to your BaseManager.java file. Here is the latest one from CVS HEAD. Then you can pretty much eliminate any *Form references in your Manager by using the convert(Object) method. This method will convert POJOs <-> Forms and vise versa. You will likely have to do some tweaks on the package names if you're using anything < v1.4. Looking at this diff of the UserManager before and after this change will show you what's changed.

I started this task thinking I could remove the need for Forms in my classpath when compiling the service layer. However, I soon discovered that my Tests have Forms all over the place - since they replicate what my Actions will pass in. Oh well, at least my code is a bit cleaner now.

Of course, this code will become even simpler when I start using an MVC Framework that allows my POJOs to be my data handlers on the UI. These frameworks make me question if I even need Managers. Then again, it's nice to unit test what your DAOs are returning/receiving from the web layer.

Posted in Java at Feb 19 2004, 11:28:41 AM MST 2 Comments