[ANNOUNCE] Hibernate 2.1.2 Released
Hibernate 2.1.2 has been released. Looks like they fixed a whole sh*tload of bugs. Read the Release Notes or Download. All tests pass in AppFuse!
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 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.
Hibernate 2.1.2 has been released. Looks like they fixed a whole sh*tload of bugs. Read the Release Notes or Download. All tests pass in AppFuse!
I don't use my comcast.net account, but I do use their SMTP server to send e-mail. I've sent a few messages to the tomcat and ant mailing lists in the past couple of days, and they've never shown up. Today, I realized why. Howard says:
...it appears that there's a disruption which is preventing mail originating at comcast.net's domain from reaching apache.org's. This may have been going on for a week (its probably related to the massive amount of e-mail from the MyDoom virus).
I guess I'll have to resend those suckers from my Yahoo account. Even with this disruption, I still think Comcast's broadband is the best in the business. Who can complain about 2 MB/sec (downloads average 250K/sec)? OK, maybe it's not that today, but usually it's pretty close.
Mike Lawrence has been beating his head against the wall trying to get AppFuse running on Oracle App Server for the last few days. The good news is he finally got it working and he's written up some documentation. I wiki-fied his contribution and now I present you [How To run AppFuse on Orion|AppFuseOnOrion]. Enjoy!
After seeing that Tim Bray is making $500/month of Google Ads, I decided it was high time I try to get this site approved again. Low and behold it worked! So they've approved me, but I only want to show them when folks come from Google. As in, when the referer (yeah, I know that's spelled wrong, but it is in Java and JavaScript too) contains "google" - show the ads. Anyone know how to do this cleanly in Roller/Velocity? Or JavaScript? I tried the following, but it doesn't work:
if (document.referer != null && document.referer.toString().indexOf("google") != -1) { // define variables document.write("<scr" + "ipt type='text/javascript' src='ads.js'><\/scr" + "ipt>"); }
Since Google is my top referrer - I think I'll get a fair amount of users seeing the ads, and it won't disturb the folks who come here just to read my ramblings.
I changed the directory structure of AppFuse's "src" and "test" directories this weekend. Rather than:
src - common - ejb - web
I changed it to:
src - dao - service - web
The change wasn't too difficult, but the results of doing it make me a bit sick to my stomach. I always new that the Managers in AppFuse were dependent on Struts, that's why I originally put them in the src/web/**/webapp/service folder. Now that I've moved them into the service folder, they don't inherit all the luxuries like struts.jar being in the classpath. Even worse, to compile the Managers, I have to compile any ActionForms, both from the build/web/gen directory, as well as from src/web/**/Form. This is because the Managers use BeanUtils.copyProperties() to transfer values from POJOs -> ActionForms and visa-versa.
Ech - this exercise has really shown me how tied together the different directories and layers are. I think I
liked it better the other way - or maybe I just liked not knowing how tightly integrated everything was. ;-) The most frustrating thing turned out to be that Ant's <javac> task wanted to re-compile the generated ActionForm's each time I I ran "ant compile-service". Adding an <uptodate> property fixed this problem, but it seems like it should be easier than that.
I ended up putting the org.appfuse.model
package in the "dao" directory. It just made things easier - since the model.* classes are used in my DAOs
and the "test-dao" needs the XDoclet-generating Hibernate mapping files. I didn't want to have to depend on classes in the src/service directory to compile src/dao. It's bad enough I have to do that with the service-web stuff.
All in all, I'm happy with the refactorings, but implementing workarounds for the service-web relationship was no
fun. I probably did this when I originally created AppFuse, but since I haven't heavily manipulated build.xml in so long - I've forgotten the trouble I went through.
Oh yeah, I also integrated Spring for binding the layers and configuring Hibernate. And Charles' persistent cookie strategy? That's done too. I'll write up details on both of these refactorings in the next couple of days.
I asked this question on the Spring Forums a couple of days ago, but I didn't get a response, so I'll try it here.
Looking through the Spring's petclinic and jpestore applications - both seem to advocate one single class to interface with the database (hibernate or dao/ibatis). I also noticed this pattern in Java Open Source Programming. Is this a recommended pattern or do you still think there's value in several service-level classes (i.e. one for each DAO)? I imagine the single interface and impl could grow quite large on a big project. In fact, in the Spring examples, the Manager isn't even a Business Delegate, it's really a Persistence Manager.
BTW, the Petclinic app is a helluva plug for Hibernate. The Hibernate implementation class is 53 lines, and the JDBC implementation class is 770 lines! If you're still using JDBC over Hibernate, please explain why you put yourself through the pain?
I do like the simplicity of the Single Manager approach, but I tend to do 1 Manager for each DAO (or something resembling this pattern). What do you advocate? AppFuse follows the 1-Manager to 1-DAO pattern. Should I switch to the Single Manager pattern?
Charles has figured out why JavaBlogs gets duplicate posts from Roller-based blogs. And Dave proposes a solution:
I just now changed the JRoller "absolute URL to site" setting to force the domain name to jroller.com. The setting was blank before.
Without this setting, the JRoller feeds were using whatever hostname was requested at cache refresh time. So if the first request after the cache timeout was for freeroller.net then the GUID's in the RSS feed would read freeroller.net until the next cache timeout.
This site was missing the absolute URL to site setting as well, so I changed it to http://raibledesigns.com. I'll try adding myself back to JavaBlogs aggregator and hope that works!
My Dad is heading to Tanzania (Africa) for two weeks on Friday. He works for the BLM as a Wireless Engineer - here's what he described his trip as:
I'm going to do a Radio System Assessment for the Ugalla Game Reserve for the Division of Wildlife of the Republic of Tanzania. I will be working with the Division of Wildlife and Africare to determine a radio system that will best allow the anti-poaching patrols to more effectively do their job and to enable other Game Reserves to comunicate with Ugalla. Ugalla's base station will be located in Tabora which is in western Tanzania. The asessment trip will allow us to determine the best communication solution for their needs, to develop guidelines for the purchasing of some of the equipment, and to haul and install what equipment we do purchase at a later date.
Pretty cool, eh? Good luck Pops!
At 5:44 p.m. this evening, someone from IP address 80.110.91.39 uploaded a zip file with a .exe file enclosed to my wiki. Wonder if that sucker is a virus? You could make 1/2 million (from Microsoft and SCO) if you catch the virus starter. I wonder if the IP address will help at all? I doubt it, it's probably spoofed.
If you want to use Velocity Templates instead of JSPs in your AppFuse-based web application, Cameron Gray has figured it out. Not only did he figure it out, but he was nice enough to write up a tutorial on it. Thanks Cameron - the time you took to write the tutorial is greatly appreciated.
In other AppFuse news, Rick Hightower seems to have convinced it to work with MyEclipse, JBoss and the Firebird database. Also, I received a few messages this week and I think another user has convinced it to run on Orion/Oracle successfully! If I ever get motivated, I'll try to put How-Tos on the wiki for all of these.