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 "appfuse". 771 entries found.

You can also try this same search on Google.

Open Source CMS based on AppFuse

If you're looking for AppFuse examples or a Java-based CMS (Content Management System) - you might want to checkout AtLeap.

Blandware AtLeap is a multilingual free Java CMS (Content Management System) with full-text search engine. Blandware AtLeap is a framework which allows you to rapidly start your own Web application.

The screenshot looks pretty cool. According to Andrey Grebnev (the project's owner), this project is based on AppFuse 1.5 with pieces from 1.6.

Posted in Java at Apr 05 2005, 02:54:52 PM MDT 1 Comment

Upgrading to Spring 1.2 RC1 and Hibernate 3.0

I spent an hour or so on Friday upgrading Equinox and AppFuse to use Spring 1.2 RC1 and Hibernate 3.0. The upgrade for AppFuse was relatively painless, but the upgrade for Equinox failed. Equinox uses HSQLDB version 1.7.1. The main reason I use the 1.7.1 version is to avoid the infamous "lock exception" that the new HSQL version throws in standalone mode. With version 1.7.1, it seems you could have more than one connection open to the file-based database w/ no problem. I really like this feature in 1.7.1 b/c it means you can run the app in Tomcat and browse the database at the same time.

So what's the problem? Why can't I just use Hibernate 3.0 with HSQL 1.7.1? The problem is I like using the following setting as part of my "sessionFactory" bean:

<prop key="hibernate.hbm2ddl.auto">update</prop>

This setting will update the schema when you change mapping files, but otherwise leave the data intact. Furthermore, it'll actually create the tables if they don't exist. Not so with Hibernate 3. With Hibernate 3, using "update" doesn't create the tables. Of course, upgrading to a newer version of HSQL fixes the problem, but then I get the lock problem. My eventual solution will probably be to hack Hibernate or HSQL, but for now I just won't upgrade Equinox. Another solution might be to look at some other embedded databases. Of course, I could also require users to install a database to run Equinox - but I like having the "no setup required" feature.

Regardless of the problems I experienced with HSQL and Hibernate 3, upgrading AppFuse was pretty painless. Here's the set of instructions I sent to the mailing list:

  1. Download Hibernate 3.0 and Spring 1.2 RC1.
  2. Create a lib/spring-1.2-rc1 and put the following files in it (NOTE: spring.jar now contains aopalliance.jar):
        acegi-security-0.8.1.jar
        commons-codec.jar
        ehcache-1.1.jar
        license.txt
        spring-mock.jar
        spring.jar
  3. Create a lib/hibernate-3.0 and put the following files in it:
        hibernate3.jar
        lgpl.jar
        lib/antlr-2.7.5H3.jar
            antlr.license.txt
            asm.jar
            c3p0-0.8.5.jar
            c3p0.license.txt
            cglib-2.1.jar
            dom4j-1.5.2.jar
            jta.jar
            jta.licence.txt
            oscache-2.1.jar
            swarmcache-1.0rc2.jar
  4. Change the versions for Hibernate and Spring in lib/lib.properties. Also, change the hibernate.jar property to reference hibernate3.jar instead of hibernate2.jar.
  5. In build.xml, change the "package-web" target to include all the Hibernate JARs instead of just specific ones:
    <lib dir="${hibernate.dir}/lib" includes="*.jar" excludes="jta.jar"/>
  6. Change web/common/taglibs.jsp to use uri="/oscache" for the oscache taglib.
  7. Search for "net.sf.hibernate" and replace it with "org.hibernate".
  8. Search for "orm.hibernate" and replace it with "orm.hibernate3" (for Spring).

The major difference for Hibernate is you no longer need odmg-3.0.jar, but you do need asm.jar and antlr-2.7.5H3.jar. Let me know if you find any issues with these instructions. You could also just download AppFuse from CVS.

NOTE: The CVS version of AppFuse has an XDoclet version that only supports generating Hibernate 2.x mapping files. I believe there is support for Hibernate 3 in XDoclet's CVS - but I haven't had a chance to upgrade yet.

Update: Here's more on the HSQL bug that's not really a bug (according to a comment on the post). Regardless of whether it's a bug or not, it'd be nice to have the 1.7.1 behavior as an option - it's a great feature for get-started-quick apps like Equinox.

Posted in Java at Apr 03 2005, 06:52:52 PM MDT 9 Comments

Going to work for Microsoft

I received a fair amount of feedback from yesterday's post. A few folks sent e-mails asking me to partner with them to start a company, and a couple of companies called claiming they could set me up with my "dream job". The call I didn't expect was from Ashwin Karuhatty of Microsoft. Ashwin is the Developer Evangelist that invited me to the Developer Summit in Redmond a few weeks ago.

He offered me a position with Microsoft being a Developer/Evangelist working on the Visual Studio Team to integrate Ajax-ish components into .NET. I've been doing a lot with Ajax stuff lately, and really enjoying myself, so I've accepted the position. I just submitted my two-weeks notice to my Project Manager and will become a Microsoftee on April 11. For the first 2 months, they're going to let me work out of my house, with an eventual move to Redmond, WA. I'm pretty excited about the move - both my parents and my sister live w/in 4 hours of Redmond. Sure it rains a lot there, but having family so close should make up for that.

If you have any suggestions for Ajax Components in Visual Studio, let me know!

Posted in Java at Apr 01 2005, 05:56:41 AM MST 35 Comments

What's next in my career?

I've been pretty fortunate in my career so far. A few years ago, I was attending Web Designer conferences, learning more about HTML, Photoshop and Flash. At those conferences, I admired the speakers, the relationships they had with other speakers and how they really seemed to be enjoying the "speaking lifestyle." I thought to myself, "that's what I want to do."

Fast forward to today and I feel like I've accomplished everything I ever wanted to in my career. Now I'm experiencing an interesting state of mind. I don't really know what I want to do next. I'm certainly enjoying being a consultant and getting new gigs every 3-6 months, but I know if you want to make any real money as a consultant, you have to travel. When I say "real money", I mean $200-$300/hour, which equates to $400K-$600K/year. The problem with consulting is I don't want to travel. At all.

So I can continue being a consultant, making pretty good money, but I'm yearning for something more. I don't know what the "more" is, but I feel like I should have a plan for the next 5-10 years. I've had a couple of good offers for full-time jobs recently. The problem is that full-time employment generally doesn't appeal to me. The main reason is because I don't want to take a 50% pay cut. The second reason is because I tend to take 2-3 months off per year, and finally - I never seem to be that interested in the hiring company's mission statement.

The 2-3 months off is probably a misnomer because many of those weeks are for conferences, but I doubt I'd find a company that'd send me to conferences and pay for it.

On Monday, I was discussing this with a potential employer/client - and it hit me. I think I need to share my career aspirations with a full-time employer's to make it work. Since I'm at a point where I I don't know what my goals/desires are - it's pretty tough for me to see myself working for anyone but myself. What I do know is that it would drastically help if starting the company was my idea. The problem with this is I don't really have the motivation to start my own company right now. Sure I have Raible Designs and all, but to make real money as a non-consultant, I think you have to have a product. I could hire a bunch of consultants, but I don't really want to manage people - it seems like it'd be more fun to develop, ship and support product(s). Then I wouldn't have to travel at least.

This is all to say that I don't know what I'll do next in my career. Heck, I don't even know what I want to do. One things for sure though - my current gig is one of the best I've ever had. Awesome team, good rate, great location and super-easy commute. I think I'd be a fool to quit before my contract ends at the end of the year.

What are your career aspirations for the next 5 years? The next 10?

Posted in General at Mar 30 2005, 10:58:30 PM MST 21 Comments

No More Kids

I've only ever wanted two kids. However, Julie has been playing with the idea of 4 ever since we had Jack. Her thought is "they're so damn perfect, let's have more!" I've always wanted 2, and so did she when we first met - but she grew up with a sister and they've always been best friends. Abbie doesn't have a sister, and Julie doesn't want an odd number of kids - hence her slight desire for four.

This Friday, all this talk of possibly having 4 kids will come to an end. I'm heading into the doctor's office for the Big V and will lose my ability to reproduce. I'm terrified, but hopefully the drugs will be good enough to ease my fears (and pain afterwards).

I'm supposed to "take it easy" for a week afterwards and not lift anything more than 10 pounds. This means I can't pick up Abbie or Jack, and I can barely pick up my backpack (w/ laptop) to go to work. No riding to work either. With all the "you can't dos", it almost seems like a mini-vacation. However, the thought of getting my nuts cut still sends chills down my spine.

Posted in General at Mar 30 2005, 12:45:58 PM MST 29 Comments

Ditchnet.org: JavaScript tips and a cool Tabs Tag Library

Thanks to a post to the Struts Menu Mailing List, I discovered a nice blog about JavaScript and DHTML. Not only does it seem to have lots of good tips and tricks, but its author also has a couple of cool menu examples:

Nice work Todd!

Posted in Java at Mar 24 2005, 09:58:46 AM MST 7 Comments

Trim Spaces in your JSP's HTML

One of the annoying things about JSPs is all of the dynamic (non-rendered) parts of the page still produce line breaks. This means that if you do a view-source, you'll likely see large blocks of whitespace.

The good news is you can get rid of this whitespace if you're using Tomcat 5.5.x. Just locate the "jsp" servlet in $CATALINA_HOME/conf/web.xml and add the following <init-param>:

    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>

I tested it and it works great. This begs the question - why isn't this on by default? Source: Struts Mailing List.

Update: JSP 2.1 adds the ability to trim whitespaces.

Posted in Java at Mar 23 2005, 10:24:58 PM MST 39 Comments

How IE handles PDFs

From the Struts User Mailing List, I spotted a good explanation of how IE handles PDFs. It's quite messed up, so I thought I'd post it for your amusement.

If your application returns data that is to be handled with an ActiveX control (ie Adobe Acrobat Reader) the browser sends additional requests to the server. In IE 4.x and 5 it actually sends three requests. For IE 5.5+ it sends two.

Assuming that your using IE 5.5+, the first request is the original request (duh), but then IE sends a second request to get the content-type. Who knows why they can't figure this out on the first request ;) This second request has it's userAgent header set to "contype". You can solve this problem and increase the performance of your application by writing a Servlet filter that sits in front of whatever Actions you have setup to serve PDF content. Have this filter look at the userAgent header of each request. If it's set to "contype" just send an an empty response back to the client with the content type set to "application/pdf". Simple as that.

More info on this "feature" is on Microsoft's site.

Posted in Java at Mar 23 2005, 09:29:56 PM MST 2 Comments

David Geary won't learn Tapestry, but he'll write a book about Rails

Sorry David, but I have to call you out on this one. Yesterday, you wrote a long post about how you won't use Tapestry b/c you have bills to pay.

Do I use Tapestry? Heck no. I have a mortgage to pay. Besides, I'm so comfortable with JSF that I don't know if it'd be worth the investment for me to switch to Tapestry. Also, JSF already enjoys more industry support and that gap will widen considerably over the next couple years as Tapestry maintains a small but rabid group of followers in a niche market, whereas JSF will dethrone Struts as the reigning king of Java-based WAFs. JSF will eventually have support for HTML views and custom components devoid of Java code, in addition to many other cool features such as built-in AJAX support and client-side validation.

Today we find that you're writing a book on Rails. So rather than spending the time to learn Tapestry b/c it doesn't pay the bills - you're going to learn Rails? What makes you think it will pay the bills better than Tapestry? Is Shale still the next big thing for you - or do you just like writing books? ;-)

Posted in Java at Mar 22 2005, 10:48:21 AM MST 14 Comments

XMLHttpRequest & Ajax Working Examples

From the AppFuse mailing list, I learned about XMLHttpRequest & Ajax Working Examples, a site that has "code snippets and proof of concepts". Subscribed.

Posted in The Web at Mar 17 2005, 01:41:35 PM MST 2 Comments