• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JBossWS Project by Alessio Soldano
 

JBossWS Project by Alessio Soldano

on

  • 1,571 views

The JBossWS project is a working example of how the open source development model can lead to real innovation while delivering enterprise level software. JBossWS is a framework for providing ...

The JBossWS project is a working example of how the open source development model can lead to real innovation while delivering enterprise level software. JBossWS is a framework for providing webservice features on top of JBoss AS. Instead of just implementing functionalities from scratch, JBossWS provides an integration layer for running three supported open source ws stacks (including Apache CXF and Glassfish Metro) on JBoss Application Server. While this is of course possible thanks to the WS world being quite specified by standards, the whole architecture is interesting because of its ability to both act as a testing framework for the supported stacks as well as the field for delivering additional cross-stack features. I'm going to present in details the architecture layout as well as describe how it allows users to really have an open choice on what stack to run their services on, while getting benefits from common management, tooling, additional features etc. On the other side, I'll introduce and provide samples of how this development model also benefits the supported stacks' communities thanks to the collaboration with them.

Statistics

Views

Total Views
1,571
Views on SlideShare
1,532
Embed Views
39

Actions

Likes
0
Downloads
34
Comments
0

2 Embeds 39

http://www.jugroma.it 36
http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    JBossWS Project by Alessio Soldano JBossWS Project by Alessio Soldano Presentation Transcript

    • JBoss Web Services Alessio Soldano alessio.soldano@jboss.com Principal Software Eng. JBoss - Red Hat April 28th, 2010
    • Who is Alessio? ● JBoss WS[1] committer since early 2007 ● JBoss / Red Hat employee since end of 2007 ● JBoss Web Service Lead, 2008 ● JBoss AS[2], JBoss Wise[3] contributor ● Current Red Hat representative at JSR-224 EG and W3C WS-ResourceAccess WG ● Apache CXF[4] committer since 2009 [1] http://www.jboss.org/jbossws [2] http://www.jboss.org/jbossas [3] http://www.jboss.org/wise [4] http://cxf.apache.org
    • What is JBoss WS? ● “Just” a feature-rich JAX-WS compatible ws stack till early 2008... ● a web services framework providing integration layers for 3rd party ws stacks on top of multiple JBoss AS versions – CXF, Native and Metro stack – AS 5.x, AS 6.x target containers
    • The benefits of standards / specs W3C standards allow for interoperability ● WS-Security <s:Envelope...> <s:Header> ● WS-Policy <o:Security...> ● WS-Addressing <u:Timestamp u:Id="..">...</u:Timestamp> <o:BinarySecurityToken...>...</o:BinarySecurityToken> ● ... <e:EncryptedKey...>...</e:EncryptedKey> <e:ReferenceList...>...</e:ReferenceList> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> Defined way to: ... </Signature> ● format messages </o:Security> ● advertise services </s:Header> ● ... <s:Body>...</s:Body> </s:Envelope>
    • The benefits of standards / specs JCP specs give us common dev API ● JSR-224 / JSR-181 (JAX-WS) ● JSR-109 (WS for JavaEE) EndpointService service = new EndpointService( ● JSR-101 (JAX-RPC) wsdlURL, serviceQName); ● JSR-261* (JAX-WSA) Endpoint port = service.getEndpointPort(); ● ... String retObj = port.echo(“Hello World”); @WebService(name = "Endpoint", serviceName = "EndpointService", targetNamespace = "http://org.jboss.ws/wsref") @SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL) public class EndpointImpl { @WebMethod(action = “echo”) public String echo(String input) { return input; } }
    • Reasons for integrating ● really good open source implementations already available - NIH syndrome ● focus on added value ● open choice (features, performance, ...) ● ... a lot of Web Services specifications!
    • Reasons for integrating
    • Who benefits from this move? ● The JBoss community: – different choices depending on needs – greater joint community support – core devs can work on added value ● The integrated ws projects and their community: – additional tests – bugs detection and fix – ...
    • JBoss WSF: high level overview
    • Web Service Framework ● Management ● Tooling – console – common JAXWS tools – endpoint registry – project generator – records system – Eclipse integration ● Configuration ● AS integration – address rewrite – authentication ● Features – authorization – JAXBIntroductions ● Common deploy – Common JAX-WSA JSR- ● Common testsuite 261 API
    • Do I really need your integration layer? ● Home-brew solutions for running CXF / Metro on JBossAS might work for specific usecases, but you... – need to embed the stack in your apps – will suffer from classloading issues – can just use pojo endpoints – have no webserviceref injection in ejb3 – loose additional WSF features ;-) – ...
    • How it works - deployment ● POJO endpoint <web-app ...> @WebService(...) <servlet> public class MyEndpoint { <servlet-name>TestService</servlet-name> public String sayHello() { <servlet-class>org.jboss.test.ws.jaxws.samples.MyEndpoint</servlet-class> return "Hello World!"; </servlet> } <servlet-mapping> } <servlet-name>TestService</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> ● EJB3 endpoint @WebService(...) @Stateless public class MyEndpoint { Create metadata to public String sayHello() { return "Hello World!"; deploy jboss-web app } }
    • How it works - deployment ● Parse or generate proprietary descriptor – jboss-cxf.xml for CXF stack (Spring conf) – sun-jaxws.xml for Metro stack ● Setup different endpoint servlets for each stack – extending CXFServlet for CXF stack
    • How it works - runtime ● Request handlers: called by enpdoint servlet to serve GET / POST requests; delegate to – CXF ServletController – Metro ServletAdapter ● Invokers: route invocation to JBossAS (JBoss EJB3 layer for ejb3 endpoints) – configured during proprietary descriptor processing / creation
    • How it works - runtime Request Endpoint servlet RequestHandler WS-* ... Invoker CXF JBoss or AS Metro JAX-WS ... handlers Response
    • More on deployers... JBoss AS 5 deployers gives high flexibility ● multiple webservice deployers generated – stack agnostic deployment aspects – stack specific deployment aspects – extensibility, separation of concerns, ... ● two webservice stacks at the same time – JAX-RPC support with CXF / Metro
    • CXF: additional integration hooks ● Bus configuration: CXF runtime behaviour is controlled by the current Bus; we can set: – custom resource resolvers – custom transport factories – custom CXF Configurer bean – ... ● Spring Namespace Handlers: we can change configuration namespace to default bean mapping – override / extend core CXF beans
    • Some links... ● http://www.jboss.org/jbossws ● http://community.jboss.org/wiki/JBossWS ● http://jbossws.blogspot.com/
    • Q&A