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 "roller". 153 entries found.

You can also try this same search on Google.

Hibernate 2.1 Beta 5 Released!

Normally I wouldn't announce a Hibernate beta release (since it is a beta and I'm not currently using it), but there's a bunch of bug fixes (see release notes) that folks might be able to use. You can also download this bad-boy if you so desire.

On a side note ~ I find it amusing how my real-world projects influence my open source contributions. I don't follow Hibernate much because I don't use it day to day. On my last few projects, I've used it a lot. When I've used it, I've also used AppFuse, and therefore - I tend to contribute the AppFuse's development more. Same goes for the displaytag - which I haven't used in a project in several months - hence, no code commits from me. The good news is that on my current project, I have been using Struts Menu a LOT and I've committed some wicked new stuff to CVS. I'm busy writing documentation on it now so it will be easier to use for all. Maybe I'll try to convince my next project to use Roller for Project Status Reports...

Posted in Java at Oct 30 2003, 04:56:55 PM MST Add a Comment

A day of upgrades

I upgraded this site to the latest code from Roller's CVS, and I'm now running Tomcat 5.0.12 Beta. It seems to be working like a charm for FreeRoller so why not? I also upgraded to Eclipse M4 on OS X and WinXP. For those of you looking for a JSP Editor for Eclipse, try Lomboz. I'm using it and it seems to work fairly well. As far as I can tell, all it gives you is syntax highlighting. I tend to use Homesite or BBEdit for JSP pages - they're better HTML editors and always will be IMO. There never will be a "I can do everything" IDE, so why keep searching? Though it would be nice if someone would figure out code-completion for custom tag libraries.

All upgrades seem to have gone smoothly and backups were made in case they crap out.

Update: The Lomboz plugin sucks, at least with the latest Eclipse. Ctrl+C and Ctrl+V don't work ~ maybe that's a good thing...

Posted in Java at Oct 11 2003, 01:31:43 PM MDT 4 Comments

New Gig starts November 3rd

I gave my notice on Monday and will be starting a new gig on November 3rd. My reasons are simple: I can bill for the commute (45 minutes each way), I can work from home 1-2 days per week, mentoring/teaching opportunities and the biggest - they want me to help them build a Resume Entry application. Sweet - I'm hoping to use Struts Resume as a baseline. If they agree to use Struts Resume, we'll have half the project done on my first day! The hard parts will be getting it to run on WebSphere and DB2 - their platforms (that I've never worked with). They're hiring me as a mentor on Java and Eclipse and also expect me to cut a fair amount of code. It'll be cool to have mentor as part of my job description. It's also a government agency, which means 40 hour weeks and no weekends. If anyone has gotten WebSphere running on OS X, hooka brutha up!

I gave my current gig a 4 week notice because I want to help them roll out the first phase of websites, and verify that architecture I helped them build actually works. They're looking to replace me with someone that has similar skills. They're located in Lafayette, Colorado - and it really is a fun place to work. Here's the most important things to know for this position: Struts, Ant, JSP and Tomcat. Let me know if you're interested.

Posted in Java at Oct 08 2003, 04:00:47 PM MDT 2 Comments

Pro JSP has arrived!

Pro JSP, Third EditionI received my complimentary four copies of Pro JSP tonight - whooo hooo! It sure is cool having your name on the cover of a book. ;-)

Congrats to all the other authors that feel the same way.

Posted in Java at Sep 29 2003, 10:06:35 PM MDT 16 Comments

Vanity URLs in Struts

I figured out a way to make your Struts' app have URLs like the following:

http://raibledesigns.com/weblog?method=edit
http://raibledesigns.com/weblog.jsp?method=edit
http://raibledesigns.com/weblog.html?method=edit
http://raibledesigns.com/weblog.php?method=edit
http://raibledesigns.com/weblog.asp?method=edit

Might be a nifty little trick to try. Pump out a version of Roller with this feature enabled and you could say you made a .NET version! ;-)

Here's how:

1.  I created a RequestFilter that maps to /*
2.  This filter checks to see if request.getServletPath() matches any of the
action paths in struts-config.xml.  If so, it forwards to the action.
3.  As an added feature, I added a set of allowed extensions to this
filter's init parameters.  So far I have .jsp,.html,.asp,.cfm (using .jsp
ensures no one links to them directly, MVC enforced!) - so marketing can
choose what technology they want to convey ;-)

This seems to work great.  For example, I have an "advancedSearch" action
defined as follows:

    <action path="/advancedSearch"
      type="org.apache.struts.actions.ForwardAction" 
      parameter=".advancedSearch"/>

(ForwardAction will eventually be replaced, if necessary, with a real
action).  This allows all of the following URLs to work:

http://site.com/do/advancedSearch (works with Struts by default)
http://site.com/advancedSearch
http://site.com/advancedSearch.html + all other extensions listed.

More information (including source code) can be found on the struts-user mailing list.

Posted in Java at Sep 19 2003, 06:23:24 PM MDT 2 Comments

Setting up CVS Spam

I think Mike turned me on to CVS Spam. CVS Spam is basically some scripts that send you HTML-formatted e-mails of diffs from CVS commits (example). I got motivated today and installed it on Raible Designs' CVS server and the one at my new gig. Works awesome! Here's the steps I had to take (outside of the documentation):

  • Download and install (./configure, make, make install) ruby. By default, this goes into /usr/local/bin/ruby.
  • Create a symlink in /usr/bin (ln -s /usr/local/bin/ruby) So the .rb files you added in CVSROOT will work. They're pointing to /usr/bin/ruby by default.
  • Edit cvsspam.rb, line 850, to be an absolute path to your CVS repository. It's currently getting "CVSROOT" as an environment variable, and I have my $CVSROOT set to my default CVS server (so I can type cvs co project, etc.).

Now the question is, does SourceForge have ruby installed on their servers? Or maybe I should just install it in my home directory and configure some projects (i.e. Roller) to use CVS Spam.

Update: I discovered that with new versions of Ruby, you need to apply a patch to CVS Spam (v0.2.7):

Index: cvsspam.rb
===================================================================
RCS file: /var/lib/cvs/cvsspam/cvsspam.rb,v
retrieving revision 1.37
diff -u -r1.37 cvsspam.rb
--- cvsspam.rb	7 Sep 2003 18:10:50 -0000	1.37
+++ cvsspam.rb	11 Sep 2003 20:41:50 -0000
@@ -878,6 +878,9 @@
 $bugzillaURL = nil
 $jiraURL = nil
 $ticketURL = nil
+$viewcvsURL = nil
+$choraURL = nil
+$cvswebURL = nil
 $from_address = nil
 $subjectPrefix = nil
 $files_in_subject = false;

Posted in Java at Sep 10 2003, 05:04:25 PM MDT 2 Comments

Building high-content web applications

I've recently been tasked with rebuilding a JSP-based site using a Struts architecture. One of the issues (that I see) in the current architecture is that there are a number of JSPs with the text for the pages hard-coded in them. After re-writing this app, we plan on deploying it to 25+ customers - and we certainly don't want to have 25 different JSPs (with text) for each customer. I've proposed a database, but that might be a little resource intensive - so I'm wondering how folks have done this in the past (I'm sure it's been done before)?

Options I see are:

  • A Database table with the following columns (page_id, title, content, section_id).
  • Text files that are imported using <c:import url=""/>

What options have you used (feel free to add more) - if you've used the database approach - how do you define the page table? Maybe we should use the Roller way and use Velocity and OSCache.

Posted in Java at Aug 19 2003, 06:30:28 PM MDT 18 Comments

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

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

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