Category → Uncategorized

Codegen and runtime Axis2 versions

I was bitten by this error a couple of times I thought of blogging it for my own reference. It’s important to remember that when you’re generating code against some WSDL, you have to use the same version of Axis2 that you’re going to deploy this service on. So, when you’re running WSDL2Java.sh that should come from a Axis2 distribution that is used in the application server that your service will get deployed. Otherwise, if the Axis2 versions differ you’ll see the following error message.

java.lang.AbstractMethodError
	at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:90)
	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:965)
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
	at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
	at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputStream(CommonsHTTPTransportSender.java:361)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:238)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
	at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:43)
	at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:178)
	at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
	at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:154)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:619)

Drive as a Hummer, save as a Prius

Samisa has written a great blog post about making sensible choices in a bad economic situation. Specially making the right choices when it comes to your middleware.

For the uninitiated it might feel that choosing a low cost middleware platform is like choosing low cost, small, fuel efficient car. Anyone having driven a cheap small car would feel that it’s not as comfortable as a huge fuel sink SUV. Also your cheap model might not have all the features as the SUV.

When it comes to software however, things are different than the real world. Going for a low cost alternative does not necessarily mean giving up the features that your other big, greedy solution had. It’s like driving a Hummer with the fuel efficiency of a Prius. Who wouldn’t want that? Take it for a test drive and see for yourself!

Plagiarism

While reading an article the other day, I just started googling some random phrases off of it and was stunned with the results. I could find the entire phrases in another source and that was not even mentioned in the article I was reading. A brief search for plagiarism will reveal that it’s such a big deal so much so that people have form companies selling plagiarism detection software. A brief message exchanges on twitter also revealed some interesting points.

Plagiarism in written material is harder to detect unless you have read the original article/book etc… It’s a whole different scenario when it comes to web publishing. Anyone can search a vast repository of published content and detect phrases copied from other sources in just seconds. It’s common in academic institutions. But it’s disgusting when grownups just copy paste shit from the internet and publish under their own name. If you’re such a mindless moron, please do spend two minutes to rephrase your sentence in a different way giving the same meaning.

I can understand someone getting carried away with Google and Wikipedia and suddenly claiming to be an expert on anything imaginable. I don’t have a problem if someone is making a living off Google and Wikipedia, they should at least have the decency of mentioning the source where they read it. Or Ctrl-C Ctrl-Ved it. Whichever applicable.