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 "young russian teenboy model pre teen". 788 entries found.

You can also try this same search on Google.

PHP vs. Java - which is better?

I have a former client that has a customer. This customer asked them - "so when are you migrating from Java to PHP?" So evidently this person has the impression that the next wave of web applications will be written in PHP. My former client has asked me to provide an answer for their customer. If I translate it, I think they mean to ask "what is different between Java and PHP and why should we use Java over PHP." Here are my opinions - please add yours as you see fit. I must admit I don't know a whole lot about PHP, except that it's widely popular among the Linux/Apache/MySQL crowd and that it's similar to ASP in it's lack of a MVC architecture (yes, I know about the PHP MVC project).

  • I think Java is more of an industry standard, whereas PHP seems to be popular among hackers and hobbyists.
  • Java provides better separation of layers - key for testability. PHP has all the code embedded in the page, so you have to run it through a browser to test if database connections work (for instance).
  • Java is more scalable.
  • More folks know Java and it's easier to qualify someone's Java skills. How do you test someone knows PHP? Is there a certification?
  • More for-profit organizations use it.

If you're a Java or a PHP-lover, I'd love to hear your opionions (facts are always better). I'm going to point my client to this post, so keep it clean.

Posted in Java at Aug 22 2003, 03:52:33 PM MDT 98 Comments

Maven Questions: Webapp best practices and local repositories

I can't seem to subscribe to the Maven User Mailing List for the life of me, so I'll ask my questions here, and hopefully get some answers. The first question is regarding local repositories. Ideally, I'd like to put this on a network drive, so all developers can get to it by mapping a drive or something. When I try to use a network drive, I get the following error (WinXP, Maven CVS pull from yesterday):

Artifact '\\server\share\repository\velocity\jars\velocity-1.4-dev.jar' 
    not found to add to classpath 
java.lang.ClassNotFoundException: velocity 
        at java.net.URLClassLoader$1.run(URLClassLoader.java:199) 

The reason I'd like to use a network share (over an FTP server or HTTP server) is because then we can easily add the .jar files to the classpath in Eclipse or JBuilder. If Maven downloads the files to each user's local hard driver - then we can use an FTP server. Another option is to use the default (~/.maven/repository), but then each developer has to copy javamail and our custom jars onto their hard drive.

My second question is regarding webapp best practices with Maven. The Maven Tomcat Plugin seems nice, but it mangles my server.xml file. I'd like a solution similar to the way I've done it with Ant. I use a context.xml file and place this in $CATALINA_HOME/webapps and then I "deploy" the expanded war into Tomcat. Tomcat detects when any files change under WEB-INF/ and reloads the app. Works great. A better solution would be to point the docBase to target/webappName. So I guess what I'm saying is - should I just create a context.xml file and make my own custom "setup-tomcat" task (which does an ant:copy)? Then use war:webapp to refresh the app's files from source? How are you experts doing it?

Posted in Java at Aug 22 2003, 11:51:35 AM MDT 3 Comments

MySQL Problem: No operations allowed after connection closed

I asked the following question on the Hibernate Forums, but thought I'd put it here to see if anyone can help.

I'm using the open-session-in-view pattern and getting the following error at random:

2003-08-21 07:00:08,873 WARN [Thread-27] JDBCExceptionReporter.logExceptions(38)
    | SQL Error: 0, SQLState: 08003
2003-08-21 07:00:08,874 ERROR [Thread-27] JDBCExceptionReporter.logExceptions(46
    ) | No operations allowed after connection closed
2003-08-21 07:00:08,875 ERROR [Thread-27] JDBCException.(37) | Could not execute
    query java.sql.SQLException: No operations allowed after connection closed
at com.mysql.jdbc.Connection.checkClosed(Connection.java:2497)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:1287)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:1267)
at org.apache.commons.dbcp.DelegatingConnection.prepareStatement
    (DelegatingConnection.java:187)
at net.sf.hibernate.impl.SessionFactoryImpl.getPreparedStatement
    (SessionFactoryImpl.java:537)
at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:56)
at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:482)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:136)
at net.sf.hibernate.loader.Loader.find(Loader.java:620)

I've used my same ServiceLocator.java class for the past 6 months on a couple of different projects (MySQL and Oracle), with no issues. But now I've developed a new app for a new client, and this error is popping up a LOT. Any ideas? I'm only closing the connection after my doFilter() method in a Filter.

It doesn't happen at all on my Windows XP machine (I've never seen the error). Only on Linux.

uname -a gives me:

Linux kgb08 2.4.20-8bigmem #1 SMP Thu Mar 13 17:32:29 EST 2003 i686 i686 i386 GNU/Linux

Tomcat 4.1.27, MySQL 4.0.13-Max-log, JDBC Driver mysql-connector-java-3.0.8-stable-bin.jar.

I've also seen it happen on MySQL 3.23.56, but now I can't seem to reproduce it.

Any ideas?

Posted in Java at Aug 21 2003, 07:50:12 AM MDT 11 Comments

Planning Raible Road Trip #7

Crater Lake Last year in September, my parents and I embarked on Raible Road Trip #6 when returning from Web Design World 2002 in Vegas. Julie didn't join us since she was 7 months pregnant. However, Raible Road Trip #7 will be Julie, Abbie and I - and it begins this weekend. I'm starting to get really excited about it. We bought our plane tickets last night, and tonight we started planning the trip. Here it is so far - thanks to all for your suggestions.

  • Fly into San Diego on Saturday morning. Stay with Julie's sister until Sunday afternoon or Monday morning.
  • Drive like a bat out of hell to Big Sur, which is about 8 hours according to MapQuest. Stay a night or two - those cabins that Andy mentioned sound nice.
  • From Big Sur, head to Bodega Bay. I'm a backwoods Montanan, so I don't know about San Fran - we might just skip it. It sure sounds cool, but I also know it's pretty crowded. I happened to remember one of my best friends (that I haven't talked to in years) actually lives in Bodega Bay - so I called him up tonight. He's fighting fires in Montana, so he might not be there - but his wife, Katie, and son will be there - so we'll probably stay with them for a night or two. This brings us to Thursday or Friday.
  • Our end destination is meeting my parents at the Oregon Caves on Friday or Saturday, so we'll probably head from Bodega up there (7 hours). Hopefully, we'll catch some redwoods along the way.
  • My dad has a couple rooms booked at Crater Lake on Sunday and Monday night. My sister, Kalin, is meeting us on Saturday.

Boy this is gonna be a fun trip. I haven't been on a road trip on California since I was a little kid. It was in the early 80s and my dad had a rigged up canvas topper on VW Rabbit pickup. We camped every night and drove like maniacs during the day. Abbie will be too young to remember, but that's what the ol' camera is for!

Posted in General at Aug 19 2003, 11:07:29 PM MDT 6 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

Cool JSP Tag: State Tag

I found a cool State Tag this morning that I'm using in my project this week. It works very nice and just like I'd expect. Here's how I'm using it:

<%@ taglib uri="http://www.servletsuite.com/servlets/statetag" 
    prefix="state" %>
...
<bean:define id="state" name="userFormEx" 
    property="state" type="java.lang.String" />
<state:state name="state" default="<%=state%>" />

Posted in Java at Aug 12 2003, 09:14:14 AM MDT 1 Comment

Tomcat 5.0.7 Alpha

Since java.blogs has already seen an announcement for Tomcat 5.0.7, there's no reason for me to do it as well. But, there is a very cool enhancement added to this release. From the changelog:

~ Allow putting a /META-INF/context.xml inside any WAR file

This allows much easier deployment IMO. Now you only need to deploy/upload one file, instead of the WAR file and a config (context.xml) file. However, this isn't part of the J2EE 1.4 spec, and other appservers have their own means of configuring - so this is not a portable solution. It would be very cool if there was a common way of doing this for Resin, Orion and Tomcat. I don't know how it would work, but maybe something like META-INF/tomcat-config.xml, META-INF/orion-config.xml, etc.

Posted in Java at Aug 11 2003, 09:11:12 AM MDT 6 Comments

New Patio Furniture

We bought some new patio furniture (a steal at $79 found by my penny-pinching lover) yesterday and I set it up this morning. Sure is nice to be outside on the ol' wireless network and writing this post. Yesterday was my last day in an office for at least a week - now if I can only find a way to wear shorts at work for the rest of the summer. Hmmm, that'll be a question I'll ask my next employer/client - "Can I wear shorts to work?" ;-) I think that's one of the best perks there is.

Posted in General at Aug 09 2003, 10:29:34 AM MDT 2 Comments

Laptop Issues

Today, my new laptop is trying my patience. So much so that I asked if I could return it (15% restocking fee, or 0% if I buy another system from them). The problem? The power cord quit working (it's been gradually dying), not to mention that the 802.11b/Bluetooth doesn't work and it feels like I'm packing around a desktop. Oh, and then there's the problem that every-so-often, I can't connect to the internet via a browser. I have IE and Firebird installed, and neither will connect. A flash, and then a "Done" status. I still have connectivity, proven by ping and e-mail, but no websites come up. What a pain - rebooting fixes the problem. Don't get me wrong, I love the performance and large screen - but only when I'm using it. Today it hasn't been useable - so it's just sitting next to me saying "look at how loud and heavy I am."

I called Hypersonic and I was impressed in how quickly I was able to talk with someone, though I was a little disappointed that they hadn't returned an e-mail that I sent last night (I called at 9 this morning, 11 their time). I told them that the powercord was dead and I needed a new one. They said they could send it out Monday and it'd be here by next Thursday. That's when I asked about returning it and now it'll be here tomorrow. This is actually the second time I've had to threaten to get something done sooner. The good thing is that it works - the bad is that they should just give me the overnight option since I remember that being a big plus about the company over AlienWare (I read it in a review or something).

The other reason I'm thinking of returning it is that I don't really need a laptop - at least not yet. I don't know what my next gig will be and if they will require a laptop - if they don't - I probably don't need it (except to save the marriage). What I mean is I don't need it for development, which makes me lean towards a new PowerBook (slow is OK sans development). Damn, I wish there was a 2 GHz PowerBook. Then again, refreshing my XP Desktop with a Sonic Boom doesn't sound so bad either.

Posted in General at Aug 08 2003, 02:23:29 PM MDT 5 Comments

A beautiful e-mail

From Julie:

your laptop is here. love you!

I'm starting to shake with anxiety! Sweet! Today shouldn't be as bad as the day I received my PowerBook. It was January 2002 and there was an Apple conference where Steve Jobs was giving his keynote. I was worried that he would announce new PowerBooks, and I was going to return it if he did. So I had to sit there for hours with the un-opened box saying "OPEN ME". At least today, I'm stuck at work and I've got plans for most of the evening. Then an interview first thing tomorrow morning. The anxiety might be around for quite some time.

Posted in General at Aug 06 2003, 12:54:24 PM MDT Add a Comment