This document discusses integrating Apache CXF with Adobe CQ to consume SOAP web services from CQ applications. It describes how to generate proxy classes from a WSDL using CXF codegen plugins, create a factory class and service interface to call the web service, and address issues with classloading in an OSGi environment when calling third party libraries like JAXB from CXF. The solution involves temporarily setting the thread context classloader when creating the web service client.
Overview of the JSON-RPC mechanism.
JSON-RPC is a simple RPC (Remote Procedure Call) mechanism, similar to XML-RPC.
Unlike XML-RPC which is a client-server protocol, JSON-RPC is a peer-to-peer protocol.
It uses JSON (Javascript Object Notation, RFC4627) as the serialization format and plain TCP streams or HTTP as transport mechanism.
JSON-RPC defines the three message types Request, Response and Notification. There is no direct mapping of JSON-RPC message to HTTP request. HTTP or plain TCP are merely transport protocols that carry JSON-RPC messages.
JSON-RPC is a simple protocol and therefore lacks most of the features that big web services like SOAP/WSDL and the WS-* standards provide. JSON-RPC may be suited for web service applications with the need for bidirectional interaction (peer2peer), but where the complexity of SOAP is not required.
This presentation is for those who are familiar with databases and SQL, but want to learn how to move processing from their applications into the database to improve consistency, administration, and performance. Topics covered include advanced SQL features like referential integrity constraints, ANSI joins, views, rules, and triggers. The presentation also explains how to create server-side functions, operators, and custom data types in PostgreSQL.
PHP 5.3 was released in 2009 and is the newest version of PHP. Bradley Holt will talk about the new features available including namespaces, closures (lamdba/anonymous functions), and late static binding. Learn how these new features might be useful to you and why the next major version of the big PHP frameworks will require PHP 5.3.
Overview of the JSON-RPC mechanism.
JSON-RPC is a simple RPC (Remote Procedure Call) mechanism, similar to XML-RPC.
Unlike XML-RPC which is a client-server protocol, JSON-RPC is a peer-to-peer protocol.
It uses JSON (Javascript Object Notation, RFC4627) as the serialization format and plain TCP streams or HTTP as transport mechanism.
JSON-RPC defines the three message types Request, Response and Notification. There is no direct mapping of JSON-RPC message to HTTP request. HTTP or plain TCP are merely transport protocols that carry JSON-RPC messages.
JSON-RPC is a simple protocol and therefore lacks most of the features that big web services like SOAP/WSDL and the WS-* standards provide. JSON-RPC may be suited for web service applications with the need for bidirectional interaction (peer2peer), but where the complexity of SOAP is not required.
This presentation is for those who are familiar with databases and SQL, but want to learn how to move processing from their applications into the database to improve consistency, administration, and performance. Topics covered include advanced SQL features like referential integrity constraints, ANSI joins, views, rules, and triggers. The presentation also explains how to create server-side functions, operators, and custom data types in PostgreSQL.
PHP 5.3 was released in 2009 and is the newest version of PHP. Bradley Holt will talk about the new features available including namespaces, closures (lamdba/anonymous functions), and late static binding. Learn how these new features might be useful to you and why the next major version of the big PHP frameworks will require PHP 5.3.
A short presentation about practical aspects of asynchronous data transfer with Netty
HTML version: http://vcherkassky.github.com/reveal.js/netty.html
Additional resources (from last slide):
* https://github.com/netty/netty
* http://seeallhearall.blogspot.co.uk/2012/05/netty-tutorial-part-1-introduction-to.html
Done with reveal.js: https://github.com/hakimel/reveal.js/
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Augemfrancis
OSGi Community Event 2014
Abstract:
The new HTTP Whiteboard API is a significant improvement over Http Service 1.2. In this talk we'll explore the uses and benefits of the new API and how that this should have been what java webapps were from the start.
A short presentation about practical aspects of asynchronous data transfer with Netty
HTML version: http://vcherkassky.github.com/reveal.js/netty.html
Additional resources (from last slide):
* https://github.com/netty/netty
* http://seeallhearall.blogspot.co.uk/2012/05/netty-tutorial-part-1-introduction-to.html
Done with reveal.js: https://github.com/hakimel/reveal.js/
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Augemfrancis
OSGi Community Event 2014
Abstract:
The new HTTP Whiteboard API is a significant improvement over Http Service 1.2. In this talk we'll explore the uses and benefits of the new API and how that this should have been what java webapps were from the start.
Monitoring OSGi Applications with the Web ConsoleAdobe
A presentation by senior developer Carsten Ziegeler at the OSGi Community Event / EclipseCon Europe 2013. This session introduces the latest version of the famous Apache Felix web console which allows to monitor and inspect OSGi web applications through the browser. The web console is based on a flexible plugin mechanism to add custom information and functionality. Learn how to write your own extensions and how to leverage the available functionality for monitoring and troubleshooting OSGi installations. For more on this, check out the slides available from Carsten: http://www.slideshare.net/cziegeler.
Monitoring OSGi Applications with the Web ConsoleCarsten Ziegeler
Presentation from the OSGi Community Event / EclipseCon Europe 2013
This session introduces the latest version of the famous Apache Felix web console which allows to monitor and inspect OSGi web applications through the browser. The web console is based on a flexible plugin mechanism to add custom information and functionality. Learn how to write your own extensions and how to leverage the available functionality for monitoring and troubleshooting OSGi installations.
Monitoring OSGi Applications with the Web Console - Carsten Ziegelermfrancis
OSGi Community Event 2013 (http://www.osgi.org/CommunityEvent2013/Schedule)
ABSTRACT
This session introduces the latest version of the famous Apache Felix web console which allows to monitor and inspect OSGi web applications through the browser. The web console is based on a flexible plugin mechanism to add custom information and functionality. Learn how to write your own extensions and how to leverage the available functionality for monitoring and troubleshooting OSGi installations.
SPEAKER BIO
Carsten Ziegeler is senior developer at Adobe Research Switzerland and spends most of his time on architectural and infrastructure topics. Working for over 25 years in open source projects, Carsten is a member of the Apache Software Foundation and heavily participates in several Apache communities including Sling, Felix and ACE. He is a frequent speaker on technology and open source conferences and participates in the OSGi Core Platform and Enterprise expert groups.
Node has captured the attention of early adopters by clearly differentiating itself as being asynchronous from the ground up while remaining accessible. Now that server side JavaScript is at the cutting edge of the asynchronous, real time web, it is in a much better position to establish itself as the go to language for also making synchronous, CRUD webapps and gain a stronger foothold on the server.
This talk covers the current state of server side JavaScript beyond Node. It introduces Common Node, a synchronous CommonJS compatibility layer using node-fibers which bridges the gap between the different platforms. We look into Common Node's internals, compare its performance to that of other implementations such as RingoJS and go through some ideal use cases.
WCF provides first-class support for building "Web" services that embrace REST design principles using standard Web protocols and data formats. This session illustrates how to build WCF services that support the HTTP uniform interface and different resource representations like XML, JSON, and Atom to enhance your Web 2.0 mash-up solutions. Throughout the session we'll specifically look at some of the new features in WCF 4.0 and WCF Data Services.
3. Introduction to Apache CXF
Generate Proxy-Classes from WSDL
Consume SOAP Webservices from CQ Applications
Demo
Goals
4. Why Apache CXF ?
An Open-Source Services Framework
Implements APIs like JAX-WS and JAX-RS
Speaks a variety of protocols such as SOAP, XML/HTTP,
RESTful HTTP vie HTTP, JMS etc.
Supports various WS-* web service specs
Flexible and highly configurable
Optimized for integration with Spring
To bo continued...
5. CXF provides prepacked OSGI bundle JARs.
cxf-bundle-minimal
Contains minimal set of CXF JARs in one single bundle
& Does not contain 3rdparty Dependencies/XML APIs
Cxf-dosgi-ri-singlebundle-distribution
Contains minimal set of CXF JARs in one single bundle, Contains all
3rdparty Dependencies and XML APIs, Contains a lot of additional JARs like
Spring, Jetty, PAX, cxf-dosgi, slf4j, Commons Logging, log4j, jdom etc.
For more info visit - http://cxf.apache.org/docs/why-cxf.html
11. Caused by: javax.xml.bind.JAXBException
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
... 75 more
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at
org.apache.sling.commons.classloader.impl.ClassLoaderFacade.loadClass(ClassLoaderFacade.java:127)
at java.lang.ClassLoader.loadClass(Unknown Source)
at javax.xml.bind.ContextFinder.safeLoadClass(Unknown Source)
... 82 more
12. Reason: Illegal class loading in OSGI context
Referenced library calls
currentThread.getContextClassLoader().loadClass. In this case it‘s not CXF,
but the JAXB implementation. We cannot fix the 3rdparty Implementation.
“By default, the Thread context class loader is not aware of OSGi and
thus doesn't see any of the classes imported in the bundle. That's why loading
the class fails”.
Solution
See CQ5 KB Article:
http://helpx.adobe.com/experience-manager/kb/OsgiClassLoading3Party.html