Apache CXF 2.1 released, with JAX-WS 2.1 support.

Discussions

News: Apache CXF 2.1 released, with JAX-WS 2.1 support.

  1. The Apache CXF team is proud to announce the availability of the 2.1 release! Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS. These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI. CXF includes a broad feature set, but it is primarily focused on the following areas:
    • Web Services Standards Support: CXF supports a variety of web service standards including SOAP, the WSI Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, and WS-Security.
    • Frontends: CXF supports a variety of "frontend" programming models. CXF provides a JAX-WS 2.1 Compliant frontend. It also includes a "simple frontend" which allows creation of clients and endpoints without annotations. CXF supports both contract first development with WSDL and code first development starting from Java.
    • Ease of use: CXF is designed to be intuitive and easy to use. There are simple APIs to quickly build code-first services, Maven plug-ins to make tooling integration easy, JAX-WS API support, Spring 2.0 XML support to make configuration a snap, and much more.
    What's new in CXF 2.1:
    • JAX-WS 2.1 support - the JAX-WS implementation has been updated to the JAX-WS 2.1 specification level. Code generation is JAX-WS 2.1/JAXB 2.1 compliant.
    • Initial implementation of JAX-RS 0.6 REST based service framework.
    • Javascript client generation and support - SOAP based endpoints can have javascript clients created automatically with ?js URL. There is also command line tooling.
    • CORBA binding merged from Yoko - JAX-WS Clients/Servers can talk IIOP to allow communication with other CORBA processess. Tooling for IDL -> WSDL, WSDL -> IDL, etc... are there to support this.
    • New java2ws tooling to support better "java first" development patterns.
    • xmlbeans runtime support to allow using XmlBeans for the data model.
    • MANY MANY bugfixes, performance enhancements, etc... Too numerous to list individually.
    Finally, the major new "non-code" feature:
    • This is our first release after graduating from the incubator as a Top Level Project. Thus, this is a full "non-incubator" release. :-)
    As always, we welcome feedback on our mailing lists: http://cxf.apache.org/mailing-lists.html Downloads are available from: http://cxf.apache.org/download.html Thanks! The Apache CXF Team http://cxf.apache.org/

    Threaded Messages (13)

  2. Apache CXF vs. Axis2[ Go to top ]

    What's the difference between Apache CXF and Axis2? Which is easier to use (the only point I really care)?
  3. Re: Apache CXF vs. Axis2[ Go to top ]

    It will take more than a casual visit to answer that question ;-)...maybe downloading both and kicking the tires won't hurt.
  4. CXF is easier[ Go to top ]

    What's the difference between Apache CXF and Axis2? Which is easier to use (the only point I really care)?
    I've tried both and found CXF much easier to use. The configuration files are simpler and most things are generated at runtime. That means that there is no extra compile step, which is the case with Axis2, JAX-WS and JBossWS. I "just" annotate my classes and write my little config xml file and then wsdl and suchlike are created at runtime for me. A minimal cxf-servlet.xml looks like this (goes in WEB-INF of your war): <!--?xml version="1.0" encoding="UTF-8"?--> and a simple annotated interface looks a lot like this: @WebService(name="EchoService", targetNamespace="http://ja.ws/year/month/date") public interface Echo { @WebResult(name = "echoResult") public String echoString(@WebParam(name="value") String value); } and the implementation like this: @WebService(endpointInterface = "ja.ws.cxf.Echo") public class EchoImpl implements Echo { public String echoString(String value) { return value; } } (package and imports nuked to save space, and formatting seems to get lost when I save). The documentation for CXF isn't great, but there are a lot of examples with the standard download Performance is about the same as the others. I didn't do extensive benchmarking, but I did do some threaded comparisons between Axis2 and CXF and they got similar results
  5. Re: CXF is easier[ Go to top ]

    What about contract-first development? Is CXF any easier than Axis2 or JAX-WS?
  6. Re: Apache CXF vs. Axis2[ Go to top ]

    What's the difference between Apache CXF and Axis2? Which is easier to use (the only point I really care)?
    DISCLAIMER: as a CXF developer, I'm very biased. :-) Most people that I've talked to that have tried both tell me that CXF is a lot easier to use and configure UNLESS that person is already very familiar with Axis2. For "newbies", almost everyone says CXF is easier. It's especially true if you are a Spring user. CXF was designed from the start to be configured with Spring. Thus, it works very well with Spring. The Axis2 spring stuff feels more like a "bolt on" type thing and not true Spring support. CXF and Axis 2 pretty much have very similar goals, but have gone about it with different architectures and different priorities. For example: JAX-WS support was a PRIMARY priority for CXF and we didn't release until we passed the TCK. JAX-WS is kind of a secondary goal for Axis 2. They get a little closer with each release, but they aren't there yet and their primary programming model is not JAX-WS/JAXB (for better or for worse). To answer the "contract first" question: CXF does have complete wsdl2java type tools that generate JAX-WS/JAXB compatible code. (2.1 added a wsdl2js that generates javascript code to run in a browser) JAX-WS also provides more dynamic things like the Providers and Dispatch clients. I guess the question is: what are you looking for? From a features standpoint, there are things that Axis2 supports that CXF doesn't and vice versa. Each has some cool features the other doesn't. That gap is closing with a bit with each release of each project. The other thing to consider is the track records of getting fixes to users. CXF tends to release patch releases about every 8 weeks or so. For example, 2.0 was released first week of July. 2.0.6 was also just released. I don't think Axis 2 has the same record. Maybe Axis 2 has no bugs and doesn't need to get fixes out. I don't really know. :-) Dan Kulp
  7. Hi Dan, I have one particular query, which always puzzled me from the day I read the "Code Generation" support of CXF What are these??? # XSD to WSDL (???) # WSDL to XML (does it mean XSLT transformation of WSDL to some XML) # WSDL to SOAP (???) # WSDL to service (does it mean WSDL to Java or something else) Can you tell where the above things will be useful, I couldn't find any further documentation about those, a practical use/example may be extremely useful.
  8. Hi Dan,

    I have one particular query, which always puzzled me from the day I read the "Code Generation" support of CXF

    What are these???

    # XSD to WSDL (???)
    # WSDL to XML (does it mean XSLT transformation of WSDL to some XML)
    # WSDL to SOAP (???)
    # WSDL to service (does it mean WSDL to Java or something else)

    Can you tell where the above things will be useful, I couldn't find any further documentation about those, a practical use/example may be extremely useful.
    Most of those are for doing various common wsdl things no really related to code generation: wsdl2xml and wsdl2soap both will take a "logical" wsdl (just contains schema, messages, and a portType) and it will add an appropriate soap or xml binding to it to make it a more "physical" wsdl. wsdl2service goes one step beyond that and will add the service/port to it. Those tools are generally useful for various command line type build scripts and stuff where you may have a logical contract and you want to add some physical stuff to it. I'm honestly not sure what/how xsd2wsdl works. I'll need to dig into that more. It LOOKS like it just wrappers the schema with a wsdl:definitions/wsdl:types thing to probably use as a starting point for some more tooling. Dan Kulp
  9. Re: Apache CXF vs. Axis2[ Go to top ]

    For Spring users I would recommend Spring-WS (see http://static.springframework.org/spring-ws/site/). It really provides a clean integration of Web services both for the server side and the client side, and of course it integrates nicely with the rest of the Spring framework. On the client side you can easy do WS calls using the WebServiceTemplate which really looks much like the *Template classes provided for all kinds of DAO functionality (JDBC, Hibernate, JPA, LDAP) in Spring. Another nice thing about Spring WS is that it is designed for "contract first" design of services. In fact, only other design models are not supported (see http://static.springframework.org/spring-ws/site/reference/html/why-contract-first.html ) :-)
  10. I like Spring-WS as a contract first web service framework. Unfortunately, the fact that it explicitly rejects code first development with no plans to support it is in direct conflict with the underlying philosophy of choice and simplicity in the overall Spring framework and is why I cannot and will not recommend it. Contract first is the correct approach for some problems. Code first is the correct approach for others. Spring-WS is an incomplete solution. Fortunately, CXF makes it trivial to integrate with Spring and supports both approaches extremely well.
  11. noob[ Go to top ]

    I'm new to the whole CXF and web services deal so I'm barely treading water here. I have an existing app that uses STRUTS (barely but still I can't change it). I now need to modify some of my service level to allow web services. CXF is my corporate direction so I'm trying to figure out the easiest way to get a simple web service going using CXF and STRUTS. Anyone have any simplistic examples? I know I have to create an interface file and annotate it. Then change a service class to use that interface. Those are the easy parts except that I'm confused about input and response parameters. My service level currently takes in some large java data objects (just public fields, not getters and setters), and return similar objects. I could also return an XML document if necessary, but I don't know which is best. At this point my target audience is known, but I want to build these open enough that I don't have to change them later when my audience changes. any help is appreciated!
  12. Hi Dan, Thanks for your replies, this really made me to look in to CXF and use it to do something simple and useful which may help many new comers to the field of web service, SOA and REST. I recently implemented a service which is exposed both as REST (JAX-RS) and WS-* (JAX-WS) Service. Details here: http://soa2world.blogspot.com/2008/05/rest-and-ws-service-same-service-using.html Please provide you valuable suggestions, and improvements if any that can be made to the article to make the life easier for people starting up with CXF framework. Regards, Siva Prasanna Kumar. http://soa2world.blogspot.com
  13. How do we access the locale information in the resource class? An example would be helpful
  14. Congratulations[ Go to top ]

    We, TAV IT Software Development team, also congratulate CXF. The framework provided us hassle-free java web service development in a seamless manner with Adobe Flex since 2.0 version. Kudos to CXF team. Thanks, Mustafa Egilmezbilek