Jun 12
I’ve been working with Hibernate 3.3.2 and Hibernate Search 3.1 for the past few months. We finally got to a point in our project where we are sucking in mass amounts of data into our application from a large business application via JMS. Suddenly, I’m getting the following errors during persistence:
org.hibernate.AssertionFailure: collection [ class name here ] was not processed by flush()
I tried changing the owning side of the collection, made a join table, and nothing helped. The error started when I added an @IndexEmbedded annotation to the collection, and I discovered I was missing the @ContainedIn annotation in the collection entity. That didn’t fix it. After weeks of doing little tweaks, breaking, fixing, breaking, fixing, I finally discovered the problem. I was using an older manual for Hibernate Search (3.0 specifically) and I had the following configuration parameter pushed into my SessionFactory:
hibernate.search.worker.batch_size = 1
As of Hibernate Search 3.1, that parameter has been deprecated. It has been replaced by a number of other settings allowing finer-grained control over your batch processing in Hibernate Search. Eventually we’re upgrading to Hibernate Search 3.2 which handles batches altogether differently/better. Thought I’d share, because this one had me stumped.
Apr 24
So I’ve spent a few days going over Google App Engine for Java. So far, I have to say, I’m impressed. Google has created a really cool service that lets anyone write a Java web application and host it on their multitude of servers. This is all for free, I might add. You have to be aware of a number of limitations including no threading and you’re limited to their data store for persistence. Once you get over that, you’ll see the advantage of it:
- Reliability
- Durability
- Security
- Scalability
So I got a little overwhelmed with the “ity” words, but it’s very appropriate. App Engine for Java will take the “cloud” by storm, I think. I have been looking for a Java web host and am always discouraged by the price and the limitation on memory and disk space. With Google, you can get a decently sized application running for free and they provide all the nuts & bolts.
Nice, Google. Computing in the cloud isn’t such a farce as I thought it was.
Mar 06
I spent a good 50+ hours on trying to consume a Microsoft WCF secure web service with a Java solution. I tried Spring Web Services, Axis2, and looked at Metro/Tango and decided Axis2 was the “easiest” solution. The web service I’m connecting to implements WS-Security, WS-SecureConversation, WS-Policy, WS-Trust and WS-Addressing (at least) and it’s provided through a .NET 3.5 WCF endpoint.
It doesn’t work.
Axis2 can’t handle SpNego which is a WCF closed protocol allowing two WCF machines to negotiate the credentials between them. The client has spent way too much money paying me to continue to figure out a Java solution, so I wrote a .NET 3.5 C# client. Took me literally five lines of code and it’s working. That’s great for .NET developers but a whole lotta horse shit for the rest of the world. I’m hoping Axis2′s Rampart module is updated to play nice with WS-SecureConversation and a .NET WCF web service. Until then, I’m using the .NET client to download the data and I’m storing the SOAP body into a database table. On the Java side, I’m still using JAXB2 to unmarshall the data into Java objects and process it through our existing persistence framework.
Go me!
Recent Comments