Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta.

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.


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.

AppFuse 1.9.3 Released

This release is primarily a bug fix release, but also contains upgrades to several dependent libraries, including Acegi Security 1.0.1.

To install and configure AppFuse for development, see the QuickStart Guide. Thanks to all the sponsors who have contributed products and free hosting to the project.

To see how AppFuse works, please see the following demos (username: mraible, password: tomcat):

Comments and issues can be sent to the mailing list or posted to JIRA.

Note: If you're building AppFuse on Linux, you should be aware of some non-English encoding issues. The solution is to add the following to your ~/.bashrc file.

export LC_CENGINE=en_US
export LANG=en_US
export LANGUAGE=en_US

Posted in Java at Jul 11 2006, 08:20:45 AM MDT 12 Comments

Thanks for this new release. But i think that there are some problems with acegi 1.0.1. To reproduce it 1- change the session timout to 1 minute in web.xml.
2- Login to appfuse
3- Do nothing for 1 minute.
4- After the session has been invalidated (by tomcat itself due to timeout) access some page which needs authentication.
5- The login page again appears. Do not log into the application. A session is created by tomcat ( after all the login page default is to cretae session as you have specified nothing there). In that created session acegi set null authentication and not anonymous (which i think it should have done). Now dont login and when this session is invalidated bu tomcat there comes a NullPointerException in UserCounterListener in the method attributeRemoved at following line.

System.out.println("principal is null: " +
                         (securityContext.getAuthentication().getPrincipal() == null));

That is because your condition is true aka if (event.getName().equals(EVENT_KEY) && !isAnonymous()) because user stuff is null so isAnonymous returns false and ! of it becomes true and its get into the code nad when getting principal it throws exception.

So what i guess is that acegi is not stuffing anonymous user in session though i have specified it there (actually i am running appfuse 1.9.3 as it is :)

Please look into this behavior.

Posted by Shoaib Akhtar on July 12, 2006 at 07:19 AM MDT #

Shoaib - I was unable to reproduce this problem. I removed the System.out.println shortly before uploading the release. Where exactly did you download 1.9.3 from - maybe it doesn't have the latest code?

Posted by Matt Raible on July 12, 2006 at 07:41 AM MDT #

Matt, about the encoding issue: have you tried this?
<javac encoding="ISO-8859-1" blah blah blah>
Might work with UTF-8 also.

Posted by Ignacio Coloma on July 13, 2006 at 06:50 AM MDT #

Hi Matt, Sorry about the problem actually somehow i have old version of UserCounterListener having System.out.println. Thanks anyways, great work.

Posted by Shoaib Akhtar on July 13, 2006 at 10:58 PM MDT #

Hi Matt, Sorry fo posting it here but now i am using latest appfuse 1.9.3 (downloaded from zip file) and i am running it on Tomcat 5.5.17 with jdk 1.5 but whenevr i shutdown Tomcat i get following message. log4j:WARN No appenders could be found for logger (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/appfuse]). log4j:WARN Please initialize the log4j system properly. I am using the same file and it is under WEB-INF\classess as well and logging is done when app is running but closing tomcat results in this warning. Any clue Regards, Shoaib Akhtar

Posted by Shoaib Akhtar on July 13, 2006 at 11:12 PM MDT #

Shaoib - if it happens on shutdown, I wouldn't worry about it. Does it happen with earlier versions of Tomcat, or on other containers (i.e. Resin, Jetty, JBoss or Geronimo)?

Posted by Matt Raible on July 14, 2006 at 07:19 AM MDT #

Hi, I will try it and let you know.

Posted by Shoaib Akhtar on July 14, 2006 at 09:03 AM MDT #

Dear Matt, I'm new to appfuse and I should use it with axis to generate web services. I used your tutorial at: I installed the axis-webservice extras and generated the wsdd file using ant generate-wsdd war command. But when I go to htt://my host/ my project/ services/ I receive a file not found error. So i can't see the UserService deployed. I tried to integrate axis and appfuse to have a happy axis. But I still can't find the User Service deployed, and I receive this error: ERROR [http-8085-Processor25] EngineConfigurationFactoryServlet.getServerEngineConfig(162) | Unable to find config file. Creating new servlet engine config file: /WEB-INF/server-config.wsdd I'm deployin on tomcat 5.0.28 That's all, I hope you can find a solution to this problem. Thanks a lot

Posted by Sara on July 20, 2006 at 12:51 AM MDT #

Matt, my problem is solved. The problem was that wsdd file was not copied to jakarta-tomcat-5.0.28/webapps/myproject/WEB-INF I copied it manually and it worked. I think you may need to add this step to your tutorial, so that no one get it again. Thanks a lot Matt for appfuse.

Posted by Sara on July 20, 2006 at 01:30 AM MDT #

Hi Matt, I have a problem with "setup-db" task in appfuse 1.9.3 with oracle driver, i got a JDBC Driver class not found and i don't know why... so if i run it on 1.9.2 or less version everything it's ok. There are a new configurations to do that? Thanks for any suggestions

Posted by Omar on July 20, 2006 at 03:57 AM MDT #

Sara and Omar - can you please post your questions to the user mailing list? To subscribe, send an e-mail to Or you can use the forums, which posts to the mailing list as well.

Omar - can you include the steps you went through in your e-mail so we can try to reproduce? Thanks.

Posted by Matt Raible on July 20, 2006 at 06:49 AM MDT #

Hi Sara, I know this is 5 years late but hopefully it will help others still using AppFuse 1.9.3 and Axis(webservices). In 'build.xml' append the following line inside the target block(for generate-wsdd) just before the closing target tag:

<copy todir="${tomcat.home}/webapps/${}/WEB-INF" file="${}/WEB-INF/server-config.wsdd" overwrite="Yes"/>

N.B: This copies 'server-config.wsdd' from the build/WEB-INF directory of your app to ${tomcat.home}/${}/WEB-INF' directory and overwrites the file(note the overwrite attribute used in the copy tag) which is pretty much what we'd expect from 'ant generate-wsdd' to do.

Posted by Craig Wenzil Andrew on December 12, 2011 at 11:12 AM MST #

Post a Comment:
  • HTML Syntax: Allowed