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

You can also try this same search on Google.

Help me architect Struts Resume

I've come up with a few issues for Struts Resume that I need some feedback on. Let's just get right to them. * How should I assign skill groups and skills to a resume? * Resume Templates - should I do something like Roller or simpler? * Can I produce PDF or RTF from a Velocity template? I've [elaborated more|StrutsResumeArchitecture] on my wiki. Please post your feedback via comments or on the wiki.

Update: Thanks to Mathius, I was able to implement a simple XHTML and RTF (Word) version of a simple resume today. I don't think Velocity will be the only option, I think I'm going to have to have an XSL Transformation Servlet as well, and the user will be able to choose Velocity templates or XML/XSL/FO. But that will be in a later version of Struts Resume. For 1.0, I'm going to concentrate on getting a resume updateable and presentable - PDF will be a post-1.0 option. The main reason for this is because I think I can release a 1.0 version before my next gig starts. After I start, it might be quite a while until I can get some time to work on it again.

Posted in Java at Aug 05 2003, 08:02:59 AM MDT 5 Comments

Tomcat Updates

Tomcat 5.0.6 Alpha is now available for testing. [Download, Change Log]. The same setup steps seem to apply for this release as with the 5.0.4 and 5.0.5.

In other news, I struggled with Tomcat 4.1.27's webapp reload bug for much of the evening last night. I'd say it's not a big deal in a production environment (where you don't reload webapps much), but it's a real pain in the ass for development. I'll be reverting back to 4.1.24.

Posted in Java at Aug 04 2003, 08:57:01 AM MDT 1 Comment

[ANNOUNCE] Tomcat 4.1.27 Stable Released

The Tomcat Team announces the immediate availability of Apache Tomcat 4.1.27 Stable. Among other bugfixes and improvements, Tomcat 4.1.27 includes security fixes for:

- Improper recycling of SSL client certificates with Coyote JK 2
- Improper handling of invalid content lengths in requests, causing HTTP processors to be left in an invalid state in Coyote HTTP/1.1, causing a DoS condition
- URI normalization bug in Coyote
- Improper handling of certain URLs in Coyote JK 2, causing a DoS condition

Downloads: http://jakarta.apache.org/site/binindex.cgi

I upgraded this site this morning (from 4.1.24) - everything seems to be humming along just fine.

Posted in Java at Aug 01 2003, 09:59:55 AM MDT Add a Comment

RE: A couple of quick Eclipse tips

From James Strachan:

* there are various XML editing plugins available (X-men, xmlbuddy). Though for simple stuff, just enable the Ant plugin for all XML documents. The Ant plugin has a simple colour coded XML editor.

To enable it, open the Preferences window (Window -> Preferences) then go to Workbench -> File Associations. Then for *.xml add the Ant plugin association.

Nice! I've been wondering about that. Very cool - thanks James.

Posted in Java at Jul 31 2003, 08:53:40 AM MDT 2 Comments

Hibernate In Action - First Chapter available for review at TSS

If you use Hibernate, or want to learn more about it, this is probably a good read. If you just had lunch, you might want to get a cup of coffee or tea (preferably caffeinated), ORM can be a pretty dry topic. Maybe I just need one since I just got back from lunch (and the closing on our Morrison house). My contract is ending soon (this has been confirmed) and I have nothing to do but cleaning up Javadocs - which is even drier than ORM.

TheServerSide is pleased to announce that it will be hosting a public review process for 'Hibernate In Action' (Manning), by Christian Bauer and Gavin King. The first chapter, 'Understanding object/relational persistence', introduces object/relational mapping (ORM) and compares it to other persistence mechanisms, such as self-made persistence layers and object databases.

Download and Review the first chapter: Understanding object/relational persistence.

Posted in Java at Jul 29 2003, 02:25:43 PM MDT Add a Comment

Monday Morning Mayhem

My Inbox was attacked over the weekend with all kinds of good links and fun stuff to post. So here it is:

  • LogWeb was released. A fully functional web interface for the runtime configuration of log4j within servlet containers and j2ee application servers. I won't use it, as I've never been inclined to change my logging configuration at run-time. And if I do need to change it, reloading my app isn't a big deal with Tomcat. Although, it might be nice to view your apps' configuration with this tool.
  • Mozilla and XUL for Cross-Platform User Interfaces, a Tutorial. Quick, easy and works with Mozilla Firebird. I did the examples.
  • StrutsDoc 0.3 was released. StrutsDoc is an Ant task that generates JavaDoc-like documentation from a Struts configuration file. StrutsDoc currently only supports the 1.1 version of Struts. [StrutsDoc Example] This might be helpful for documentation (a.k.a. impressing management) and bringing new developers up to speed.
  • Rowell has approved the use of his theme in Roller. I'll make sure and add a "designed by Rowell Sotto" to the bottom of the theme. Theme names are welcome. Currently, it's named "sotto."
  • Tomcat 5.0.5 Alpha was released. I'll comment here later today.

The best part of the day (so far)? My bike ride to work went from 1 1/2 hours (one-way) to 45 minutes - I just gained an hour and a half in every weekday!

Posted in Java at Jul 28 2003, 08:46:33 AM MDT 1 Comment

My Next Gig?

I don't know what my next gig will be yet, but my current one is about over. They gave us a roll off date of August 15th and it looks to be pretty firm. They're trying to get a budget approved until Q1 of next year, but it's a slow process and politics-oriented place. So if you know of anything in Denver, or via telecommuting, let me know. You can also check out my resume [MS Word - updated version]. Damn, I wish I had struts-resume done so I could use that. If I'm out of a gig on August 15th, that might be some good motivation to finish it.

Posted in Java at Jul 24 2003, 10:48:07 AM MDT Add a Comment

Container Managed Authentication enhancements in Tomcat 5.0.4

When playing around with Tomcat 5.0.4 today, I noticed a couple improvements. I use container-managed security on all my apps, and there were a couple of things that annoyed me about 4.1.x:

  • When the user is routed to the form-login-page, the URL (i.e. "/login.jsp") appears in their browser's address bar. Therefore, when you try to do request.getRequestURL() (to find the URL they originally requested), you're SOL - you get "/login.jsp" instead.
  • I have a 400 (invalid reference to login page) error-page routing to index.jsp (which redirects to /do/mainMenu). This should allow a user to bookmark "/login.jsp" and, once authenticated, they will be routed to the mainMenu. In Tomcat 4.1.x, I get routed back to the login page, and the user has to login again to get to the mainMenu.

I'm happy to report that both of these bugs are fixed in Tomcat 5.0.4. When I'm routed to the login page, the browser's address bar says the URL I requested (/do/mainMenu), rather than "/login.jsp". Also, request.getRequestURL() does return the URL I originally requested, not the login page. This is awesome IMO b/c now users will not bookmark "/login.jsp". And even if they do type it in, my 400 error page routes them to "index.jsp" which goes to the main menu. All of this did not work in 4.1.24 and now it does in 5.0.4. I'm going to start using 5.0.4 for my dev environment. Oh yeah, Roller runs fine on it too. ;0)

Posted in Java at Jul 23 2003, 11:22:50 AM MDT 2 Comments

Roller Searching - Powered by Lucene

Lucene Logo

Thanks to Min, we now have searching in Roller. He wrote a wicked-ass Lucene implementation using the util.concurrent package from Doug Lea. Here's how it works:

  • When Roller starts, it checks to see if the index is OK, and if not, rebuilds it. The index then goes into RAM and stays there until you destroy the servlet context - then it's written to disk. The location is configurable, but defaults to $(user.home} + File.separator + "roller-index".
  • A user's index is updated when they add/delete weblog entries.
  • A user can rebuild their own index via a button on the Website Settings page.
  • An Admin can rebuild a user's index from the "Admin" page and rebuild all users' indexes from the Config page.
  • The IndexManager is the central entry point, and it lives in RollerContext.getIndexManager(). For indexing, searching, etc. you use one of the following operations:

    - AddWeblogOperation
    - RebuildUserIndexOperation
    - RemoveWeblogOperation
    - SearchOperation

    After creating these ops, set any op-specific configuration options and then pass it to the IndexManager.executeIndexOperation() method.
  • Behind the scenes, there is an background thread running. This thread only performs one operation at a time. If an op is added when the thread it busy, the op will be queued. The way Lucene works is that most operations can be threaded. Lucene supports the concept of add, delete, read, query, and optimize. The only methods that cannot be active at the same time are IndexReader::delete() and IndexWriter::add(). Therefore, the operations that perform these operations are put into the background thread queue that garantees that these ops wont be performed at the same time. Searching doesn't interfere with these ops, so it can be run in any thread.

I created a #showSearchForm macro that renders a <form> with a textbox (size=20) and a "Search" submit button. I also added this to all the current themes - so if you developed a theme for Roller - you might want to check it out (username: test, passwd: roller). You can edit it right on the site if you want, then copy/send me the adjusted files. CSS seems to need the most tweaking for these to look right.

Please enter any bugs/enhancements in Roller's JIRA instance. The only one I've seen so far is that a user has to build their index manually before they get any search results. I don't know that this is a bug, just wanted to mention it. Doesn't get comments yet either - a NPE from weblogMgr.getComments() (when adding a new post) kept me banging my head against the wall for an hour - so I commented it out.

Try it, you might like it. ;-)

2 minutes later: Here's a bug - if you update an entry numerous times, it will get presented as numerous times (should be deleted and re-indexed).

Posted in Java at Jul 22 2003, 11:41:59 PM MDT 2 Comments

Luke - Lucene Index Browser

If you're working with Lucene, and you need an easy way to inspect your index, checkout Luke.

Luke is a handy development and diagnostic tool, which accesses already existing Lucene indexes and allows you to display their contents in several ways:

  • browse by document number, or by term
  • view documents / copy to clipboard
  • retrieve a ranked list of most frequent terms
  • execute a search, and browse the results
  • selectively delete documents from the index

Posted in Java at Jul 22 2003, 01:44:58 PM MDT 2 Comments