New features in this release include:
- MTOM attachment support
- WS-Security support
- Improved WSDL code generator
I used XFire for a project last year (large bank, I hope/ think they are now using it for all their web services), and really liked it. It was a pleasure to step throught, and a perfect example of a framework that really helps you out instead of getting in your way.
...Hi Maxim. Just out of curiosity, did you move from Axis 1.x? And also, what size are your typical messages? Although speed differences vary a lot, usually difference is somewhat higher than 20-25%, esp. for bigger message sizes, at least for actual messaging part (parsing, data binding, serializing).
This weekend we have tried to replace Axis with XFire and found it similar to Axis in complexity and its just slight faster (about 20-25%) for our tasks.
>Hi Maxim. Just out of curiosity, did you move from Axis 1.x? And also, what size are your typical messages? Although speed differences vary a lot, usually difference is somewhat higher than 20-25%, esp. for bigger message sizes, at least for actual messaging part (parsing, data binding, serializing).No, we have decided to stay with Axis because after 15 hours of debugging, XFire doesn't finally work. I cannot say that Axis was simpler (actually, it was complex too), but we have no reasons to replace one complex thing with another. Most messages quite small (several KBs), but we need a lot (100 calls per second on localhost, for example) of simple and small calls. Possible, this means that such perfomance is not possible with SOAP and we should modify our API to avoid such calls. -- Maxim Kramarenko TrackStudio Enterprise - Hierarchical Issue Tracking
No, we have decided to stay with Axis because after 15 hours of debugging, XFire doesn't finally work.Means you, XFire is failing or means you, XFire's performance differs from your general ideas of this aspects. What are the real performance-differences of your debugging-tests between XFire and e.g. Axis with identical requirements ? I think, performance is a criterion which depends deeply from various factors (e.g.: what systems are used, how are the tests implemented, ...). Using generalized protocols how SOAP, needs naturally more time for things how parsing ..., but makes on the other site an integration more transparently and independently. -roland
Means you, XFire is failing or means you, XFire's performance differs from your general ideas of this aspects.I mean that we have implemented some basic functionality (enough for perfomance testing), but cannot get it working in some other cases: 1) Stub classes generated using wsgen uses JAXBElement instead of String. This is a problem for us, because it means that we (and our customers) should rewrite a lot of code. 2) Using XFire, we cannot call SOAP API directly from browser, like described there http://www.trackstudio.com/documentation/35/html/Using_SOAP_from_Web_Browser.html 3) We cannot call method that should return our custom class, got an exception === org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't instantiate class. javax.xml.bind.JAXBElement === We even tried to generate stub classes using wsdl2Java (instead of wsgen), but method call just returns null in this case. I suppose that some of above mentioned problems can be resolved, I just mean that XFire is not too easy compared to Axis in our case.
What are the real performance-differences of your debugging-tests between XFire and e.g. Axis with identical requirements ?We have about 17 calls per second for XFire and 14 calls per second for Axis.
I think, performance is a criterion which depends deeply from various factors (e.g.: what systems are used, how are the tests implemented, ...).We use SOAP API to let our customers to integrate our system with third-party systems. Actually, our SOAP API is just a wrap over kernel methods, both web client and Swing client (over SOAP) uses the same set of API calls: http://www.trackstudio.com/documentation/35/html/Integrating_with_Third-Party_Systems.html But some API calls (load an object by ID, for example) should be called quite often. This is not a problem for direct calls but too slow for SOAP calls, and XFire cannot help us :-( Maxim Kramarenko TrackStudio Enterprise - Hierarchical issue tracking.
Using generalized protocols how SOAP, needs naturally more time for things how parsing ..., but makes on the other site an integration more transparently and independently.
Stub classes generated using wsgen uses JAXBElement instead of String.XFire uses JAXB? Why would anyone choose to use JAXB?
Why would anyone choose to use JAXB?Why not? It's great for small and mid-sized XML files!
The why not would be that it doesn't really perform the task of xml to Object mapping. It's a code generator and not a very good one. Any change to the schema requires regenerating the classes and then modifying code in order to get the data in the right places. The whole design was poorly thought out.Why would anyone choose to use JAXB?
Why not? It's great for small and mid-sized XML files!
Why would anyone choose to use JAXB?...
It's a code generator and not a very good one. Any change to the schema requires regenerating the classes and then modifying code in order to get the data in the right places. The whole design was poorly thought out.Actually, JAXB 2.0 is quite different from JAXB 1.0, and MUCH better. So if your experiences are from 1.0, you may want to check out 2.0. I have heard many developers (esp. ones who found 1.0 less than optimal) think highly of 2.0.
I just looked at the tutorial and it looks pretty much the same to me. Schema in, classes out. Please be clear that I am not really talking about the implementation of this approach but the approach itself. It's compeltely unecessary. If there is a way to map xml without generating any data clases using JAXB, I'd be willing to reconsider my assessment. I can't find documentation on how that would be done (not that I looked all that hard.)Why would anyone choose to use JAXB?
...
It's a code generator and not a very good one. Any change to the schema requires regenerating the classes and then modifying code in order to get the data in the right places. The whole design was poorly thought out.
Actually, JAXB 2.0 is quite different from JAXB 1.0, and MUCH better. So if your experiences are from 1.0, you may want to check out 2.0. I have heard many developers (esp. ones who found 1.0 less than optimal) think highly of 2.0.
Means you, XFire is failing or means you, XFire's performance differs from your general ideas of this aspects.This is a bug in 1.1 I believe. We'll be post a 1.1.1 soon with fixes. We hope you'll give it another whirl then.
I mean that we have implemented some basic functionality (enough for perfomance testing), but cannot get it working in some other cases:
1) Stub classes generated using wsgen uses JAXBElement instead of String. This is a problem for us, because it means that we (and our customers) should rewrite a lot of code.
... between XFire and e.g. Axis with identical requirements ?
No, we have decided to stay with Axis because after 15 hours of debugging
Oh, what I meant to ask was if you were using Axis 1.x, instead of Axis 2.x. The reason is that Axis 2.x is supposed to be quite a bit more performance than 1.x, and thus performance differences might be smaller.
Now, getting 100 requests per second through should actually be a breeze (assuming business logic is fast enough); SOAP part should not prevent such load. Anyway, good luck with your development.
Document, Document, Document!!!