SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
1
Building Applications with Apache Tuscany
Luciano Resende
lresende@apache.org
http://lresende.blogspot.com
Jean-Sebastien Delfino
jsdelfino@apache.org
http://jsdelfino.blogspot.com
Simon Laws
slaws@apache.org
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
2
Abstract
Building and composing the components of a distributed
application can be a challenge and complex bespoke solutions are
commonplace. The Apache Tuscany runtime, and the Service
Component Architecture (SCA) on which the runtime is based,
simplify the process by presenting a component based application
assembly model. In this talk we look at the Tuscany travel booking
application and explain how the individual components of the
application are constructed using a variety of technologies
including Java, Spring, BPEL and Python. We also look at how
these services are wired together using a variety of communication
protocols such as SOAP/HTTP and JSON-RPC. The complete
model can then be deployed to both stand-alone and distributed
runtimes without changes to the application itself.
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
3
Agenda
 Service Component Architecture
 Apache Tuscany
 TuscanySCATours, a Sample Travel Booking App
 Development Process
 Packaging, Build, Test
 Extending the App
o Bindings
o Spring
o BPEL
o Policies
 Deploying to an SCA Domain
 Getting Involved
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
4
SCA and Apache Tuscany
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
5
Enterprise App Development - History
Time
Web Services
 services
 service Interfaces
X business logic mixed with
tech APIs
X no Components
X no policy model
Service Component
Architecture (SCA)
 service Components
 business logic shielded from
tech APIs
 reusable components in
multiple programming languages
 easy to assemble into
compositions
 easy to bind to different
protocols
 external policy configuration
Flexibility
Agility
ROI
Monolithic
X business logic mixed
with communication logic
X no service interfaces
X no components
X no policies
SCA and Cloud Computing
 elastic composites
 more componentization
 portability across clouds
 easy to wire, rewire,
reconfigure
 policies and Provisioning
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
6
SCA Assembly Model
Composite A
Component
AService
Service Binding
Web Service
JMS
SLSB
Rest
JSONRPC
JCA
…
Reference Binding
Web Service
JMS
SLSB
Rest
JSONRPC
JCA
…
Component
B
Service Interface
- Java
- WSDL
Reference Interface
Reference
property setting
Property
promotepromote wire
Implementation
Java
BPEL
PHP
SCA composite
Spring
EJB module
…
- Java
- WSDL
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
7
Assembly
Implementation
Languages
Policy Framework Bindings
Java Java EE
Spring
C++
BPEL
Security
RM
Transactions
Web services
JMS
JCA
SCA Specifications
SCA is going through a formal standardization process at
OASIS OpenCSA (http://www.oasis-opencsa.org)
8
Open Source SOA
http://tuscany.apache.org
OASIS Open CSA - http://www.oasis-opencsa.org/
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
9
Apache Tuscany
 Apache Tuscany provides a component based programming model
which simplifies development, assembly and deployment and
management of composite applications.
 Apache Tuscany implements SCA standards defined by OASIS
OpenCSA + extensions based on community feedback.
9
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
10
TuscanySCATours
Sample Travel Booking Application
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
11
Tuscany SCA In Action
 Example from Tuscany Book
 http://www.manning.com/laws/
Example can be downloaded from Apache Tuscany
 http://tuscany.apache.org/sca-java-travel-sample-1x-releases.html
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
12
The TuscanySCATours Shopping Site
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
13
TuscanySCATours App on a Napkin
>ls -lsa
UI
Partner
Coordination
Trip
Hotel
Flight
Car
Partners
Shopping
Cart
Payment
Credit
Card
Payment
Partner
Links to other
organizations
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
14
Map to SCA composites and components
Payment
composite
component
referenceservice
As an SCA composite:
Payment
Java
payment
Payment
creditCard
Payment
EmailGateway
Java
Email
Gateway
email
Gateway
CustomerRegistry
Java
Customer
Registry
customer
Registry
transactionFee
property
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
15
Prototype and Fill in the Blanks
Very easy to create simple components, wire them together and
get them running
Doing this with simple implementations allows you to get a feel
for the app without implementing all of the moving parts in
detail
A quick way to prototype an app and define the important
components and their service interfaces
The prototype components can then be distributed to a team
for detailed implementation and testing
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
16
Payment Java Component Implementation
@Service(Payment.class)
public class PaymentImpl implements Payment {
@Reference
protected CustomerRegistry customerRegistry;
@Reference
protected CreditCardPayment creditCardPayment;
@Reference
protected EmailGateway emailGateway;
@Property
protected float transactionFee = 0.01f;
public String makePaymentMember(String customerId, float amount) {
try {
Customer customer = customerRegistry.getCustomer(customerId);
String status = creditCardPayment.authorize(customer.getCreditCard(), amount + transactionFee);
emailGateway.sendEmail("order@tuscanyscatours.com",
customer.getEmail(),
"Status for your payment",
customer + " >>> Status = " + status);
return status;
} catch (CustomerNotFoundException ex) {
return "Payment failed due to " + ex.getMessage();
} catch (AuthorizeFault_Exception e) {
return e.getFaultInfo().getErrorCode();
} catch (Throwable t) {
return "Payment failed due to system error " + t.getMessage();
}
}
}
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
17
Payment Composite
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://tuscanyscatours.com/"
name="payment">
<component name="Payment">
<implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" />
<service name="Payment"/>
<reference name="customerRegistry" target="CustomerRegistry" />
<reference name="creditCardPayment" />
<reference name="emailGateway" target="EmailGateway" />
<property name="transactionFee">0.02</property>
</component>
<component name="CustomerRegistry">
<implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
</component>
<component name="EmailGateway">
<implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
</component>
</composite>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
18
SCA and WS Bindings
Payment
CreditCard
Payment
EmailGateway
Java
Java
creditcard
Java
payment
Payment
Email
Gateway
CreditCard
Payment
creditCard
Payment
email
Gateway
CustomerRegistry
Java
Customer
Registry
customer
Registry
transactionFee
(8081)
(8082)
binding.ws
binding.sca
binding.ws
binding.ws
binding.sca
binding.sca
binding.sca
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
19
SCA Payment Composite – with WS Bindings
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://tuscanyscatours.com/"
name="payment">
<component name="Payment">
<implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" />
<service name="Payment">
<binding.ws uri="http://localhost:8081/Payment" />
</service>
<reference name="customerRegistry" target="CustomerRegistry" />
<reference name="creditCardPayment">
<binding.ws uri="http://localhost:8082/CreditCardPayment" />
</reference>
<reference name="emailGateway" target="EmailGateway" />
<property name="transactionFee">0.02</property>
</component>
<component name="CustomerRegistry">
<implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
</component>
<component name="EmailGateway">
<implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
</component>
</composite>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
20
Web 2.0 Bindings and Widget Components
Web 2.0 bindings: REST, JSON, JSONRPC, DWR,
Feeds (ATOM, RSS)
Tuscany Widget implementation representing Web components,
with Javascript dependency injection
Other scripting implementation types
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
21
SCA Payment Composite – JSON-RPC Bindings
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://tuscanyscatours.com/"
name="payment">
<component name="Payment">
<implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" />
<service name="Payment">
<binding.jsonrpc uri="http://localhost:8081/Payment" />
</service>
<reference name="customerRegistry" target="CustomerRegistry" />
<reference name="creditCardPayment">
<binding.jsonrpc uri="http://localhost:8082/CreditCardPayment" />
</reference>
<reference name="emailGateway" target="EmailGateway" />
<property name="transactionFee">0.02</property>
</component>
<component name="CustomerRegistry">
<implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
</component>
<component name="EmailGateway">
<implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
</component>
</composite>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
22
Packaging and Deployment
 Service implementations are deployed into an SCA Domain
 Represents the SCA runtime configuration
 In general heterogeneous with distributed SCA runtime Nodes.
 Defines the scope of what can be connected by SCA Wires
 SCA Domain configuration is a Domain Composite
 Final configuration for service dependencies, properties, bindings,
policies
 Implementation artifacts and their configuration added to a Domain as
Contributions
 Many packaging formats (JAR, ZIP, Folder etc.)
 Artifacts (Classes, XSD, WSDL, BPEL etc.) may be shared between
Contributions
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
23
Building Contributions with Maven
 Using Maven project layout, place composites, component
implementations, interfaces and other required artifacts together
Use mvn eclipse:eclipse to build an Eclipse project
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
24
Developing in Eclipse
To import an SCA contribution built using Maven into Eclipse
 Set M2_REPO
 Import your contribution project previously built using mvn
eclipse:eclipse
If you're building an SCA contribution from scratch in Eclipse,
add a dependency on the Tuscany runtime Jars
 An easy way to do this is to create an Eclipse user defined library that
includes all the Tuscany Jars and dependencies, and add this library to
your new contribution
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
25
Payment-java Contribution in Eclipse
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
26
Running in a Single JVM
To test payment-java we need three more things
 The creditcard-payment-jaxb contribution. This contains the composite
that defines the CreditCardPayment service that the Payment
component references
 The launcher-payment-java project that loads these two contributions
into Tuscany and then calls the Payment component
 The util-launcher-common project which contains a few utilities that we
wrote for the TuscanySCATours application
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
27
Embedding Tuscany
public class PaymentLauncher {
public static void main(String[] args) throws Exception {
SCANode node = SCANodeFactory.newInstance().createSCANode(null,
locate("payment-java"),
locate("creditcard-payment-jaxb"));
node.start();
SCAClient client = (SCAClient)node;
Payment payment = client.getService(Payment.class, "Payment");
System.out.println("Payment Java test");
System.out.println("nSuccessful Payment - Status = nn" + payment.makePaymentMember("c-0", 100.00f));
System.out.println("nnFailed Payment - Status = nn" + payment.makePaymentMember("c-1", 100.00f));
node.stop();
}
The locate() operation is a utility we created for this sample which simply locates
a contribution in the sample directory structure and returns its location.
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
28
Spring Bean Component Implementation
Property
Name: transactionFee
Type: float
</bean>
</bean>
<property name="transactionFee"
value="0.5f"/>
Payment
component
type
<property name="creditCardPayment"
ref="creditCardPaymentReference"/>
<bean id="Payment"
class="com.tuscanyscatours.payment.impl.PaymentImpl">
Service
Name: Payment
Interface: payment.Payment
Reference
Name: creditCardPaymentReference
Interface:
payment.creditcard.CreditCardPayment
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
29
Payment Spring Component
Payment
CreditCard
Payment
Spring
creditcard
Java
payment
Payment
CreditCard
Payment
creditCard
Payment
transactionFee
(8082)
binding.ws
binding.ws
binding.ws
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
30
Payment Spring Context
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sca="http://www.springframework.org/schema/sca"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="Payment" class="com.tuscanyscatours.payment.impl.PaymentImpl">
<property name="creditCardPayment" ref="creditCardPaymentReference"/>
<property name="emailGateway" ref="EmailGateway"/>
<property name="customerRegistry" ref="CustomerRegistry"/>
<property name="transactionFee" value="0.5f"/>
</bean>
<bean id="CustomerRegistry"
class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl">
</bean>
<bean id="EmailGateway"
class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl">
</bean>
</beans>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
31
Payment Composite
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://tuscanyscatours.com/"
name="payment">
<component name="Payment">
<implementation.spring location="Payment-context.xml"/>
<service name="Payment">
<binding.ws uri="http://localhost:8081/Payment"/>
</service>
<reference name="creditCardPaymentReference">
<binding.ws uri="http://localhost:8082/CreditCardPayment"/>
</reference>
<property name="transactionFee">1.23</property>
</component>
</composite>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
32
BPEL Process Component Implementation
ShoppingCart
Payment
Payment Process
Email
Gateway
implementation.bpel
<variable/>
<partnerLink/>
<partnerLink/>
<partnerLink/>
<process>
<sequence>
<receive/>
...
<invoke/>
...
<invoke/>
...
<reply/>
</sequence>
</process>
reference
referenceservice
property
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
33
Payment BPEL Process Component
Payment
CreditCard
Payment
EmailGateway
BPEL
Java
creditcard
Java
payment
Payment
Email
Gateway
CreditCard
Payment
creditCard
Payment
email
Gateway
CustomerRegistry
Java
Customer
Registry
customer
Registry
transactionFee
(8081)
(8082)
binding.ws
binding.sca
binding.ws
binding.ws
binding.sca
binding.sca
binding.sca
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
34
Payment BPEL process
<process name="Payment" targetNamespace="http://www.tuscanyscatours.com/Payment" ...>
<import location="Payment.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/"
namespace="http://www.tuscanyscatours.com/Payment/"/>
<import location="CreditCardPayment.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/"
namespace="http://www.tuscanyscatours.com/CreditCardPayment/"/>
<import location="EmailGateway.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/"
namespace="http://www.tuscanyscatours.com/EmailGateway/"/>
<partnerLinks>
<partnerLink name="paymentPartnerLink" partnerLinkType="pp:PaymentLinkType" myRole="forward" />
<partnerLink name="creditCardPaymentPartnerLink" partnerLinkType="ccp:CreditCardPaymentLinkType"
partnerRole="forward" initializePartnerRole="yes" />
<partnerLink name="emailGatewayPartnerLink" partnerLinkType="eg:EmailGatewayLinkType"
partnerRole="forward" initializePartnerRole="yes" />
</partnerLinks>
<variables>
<variable name="makePaymentMemberRequestMessage" messageType="pp:MakePaymentMemberRequest"/>
<variable name="makePaymentMemberResponseMessage" messageType="pp:MakePaymentMemberResponse"/>
....
</variables>
<sequence>
<receive name="start"
partnerLink="paymentPartnerLink"
portType="pp:Payment"
operation="makePaymentMember"
variable="makePaymentMemberRequestMessage"
createInstance="yes"/>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
35
Payment Composite
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
xmlns:pp="http://www.tuscanyscatours.com/Payment"
targetNamespace="http://www.tuscanyscatours.com/Payment"
name="payment">
<component name="Payment">
<implementation.bpel process="pp:Payment"/>
<service name="paymentPartnerLink">
<interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
<binding.ws uri="http://localhost:8080/Payment"
wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
</service>
<reference name="creditCardPaymentPartnerLink">
<binding.ws uri="http://localhost:8082/CreditCardPayment"/>
</reference>
<reference name="emailGatewayPartnerLink">
<binding.ws uri="http://localhost:8088/EmailGateway"/>
</reference>
</component>
</composite>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
36
SCA Policies
Payment
CreditCard
Payment
EmailGateway
Spring
Java
creditcard
Java
payment
Authentication
Payment
Email
Gateway
CreditCard
Payment
creditCard
Payment
email
Gateway
CustomerRegistry
Java
Customer
Registry
customer
Registry
transactionFee
(8081)
(8082)
Authentication
binding.ws
binding.sca
binding.ws
binding.ws
binding.sca
binding.sca
binding.sca
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
37
Adding Policy Intents
<component name="Payment">
<implementation.spring location="Payment-context.xml"/>
<service name="Payment">
<binding.ws uri="http://localhost:8081/Payment"/>
</service>
<reference name="creditCardPaymentReference" >
<binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
</reference>
<reference name="emailGateway" target="EmailGateway"/>
<reference name="customerRegistry" target="CustomerRegistry"/>
<property name="transactionFee">1.23</property>
</component>
<component name="CreditCardPayment">
<implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" />
<service name="CreditCardPayment">
<interface.wsdl
interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)" />
<binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
<binding.sca/>
</service>
</component>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
38
Defining policy sets
<definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
<policySet name="BasicAuthenticationPolicySet"
provides="authentication"
appliesTo="sca:binding.ws">
<tuscany:basicAuthentication>
<tuscany:userName>myname</tuscany:userName>
<tuscany:password>mypassword</tuscany:password>
</tuscany:basicAuthentication>
</policySet>
</definitions>
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
39
Adding more components - 1
TuscanySCA
ToursUser
Interface
TravelCatalog
TripBooking
ShoppingCart
Hotel
Partner
Flight
Partner
Car
Partner
Currency
Converter
Trip
Partner
Java
Java
Java
Java
Java
widget
(8080)
fullapp-coordination fullapp-packagedtrip
fullapp-bespoketrip
fullapp-currency
fullapp-shoppingcart
Java
Java
Java
CartStore
Java
>ls -lsa
SCATours
Java
LoggingquoteCurrency
Code
TravelCatalog
Search
TripBooking
SCATours
Booking
SCATours
Cart
SCATours
Search
Search
Search
Search
Search
Book
Book
Book
Book
Currency
Converter
Cart
Updates
Cart
Initialize
CartStore
trip
Search
hotel
Search
flight
Search
car
Search
currency
Converter
trip
Book
hotel
Book
flight
Book
car
Book
car
Book
cart
Updates
scaTours
Search
scaTours
Booking
scaTours
Cart
travelCatalog
Search
tripBooking
cartInitialize
payment
cartStore
cartCheckout
Cart
Checkout
to Payment component
(8085)
fullapp-ui
(8084) (8083)
(8086)
(8087)
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
40
Adding more components - 2
Payment
CreditCard
Payment
EmailGateway
Spring
Java
creditcard
Java
payment
Authentication
Payment
Email
Gateway
CreditCard
Payment
creditCard
Payment
email
Gateway
CustomerRegistry
Java
Customer
Registry
customer
Registry
from ShoppingCart
component transactionFee
(8081)
(8082)
Authentication
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
41
SCA Domain
A distributed deployment
of the assembly.
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
42
Running Multiple Tuscany Nodes
public class FullAppNodesLauncher {
public static void main(String[] args) throws Exception {
SCANode nodeCreditcard =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/creditcard");
nodeCreditcard.start();
SCANode nodePayment =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/payment");
nodePayment.start();
SCANode nodeShoppingcart =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/shoppingcart");
nodeShoppingcart.start();
SCANode nodeCurrency =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/currency");
nodeCurrency.start();
SCANode nodePackagedtrip =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/packagedtrip");
nodePackagedtrip.start();
SCANode nodeBespoketrip =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/bespoketrip");
nodeBespoketrip.start();
SCANode nodeFrontend =
SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/coordination");
nodeFrontend.start();
SCANode nodeUI = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/ui");
nodeUI.start();
...
}
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
43
Getting Involved
with Apache Tuscany
IBM Software Group
44
http://tuscany.apache.org
SCA - Resources
 Good introduction to SCA
 http://www.davidchappell.com/articles/Introducing_SCA.pdf
 OASIS Open CSA – http://www.oasis-opencsa.org
 V1.1 level specs
 http://www.oasis-opencsa.org/sca
 Open CSA Technical Committees
 http://www.oasis-opencsa.org/committees
 OSOA
 http://osoa.org/display/Main/Home
 More information on that site
 http://osoa.org/display/Main/SCA+Resources
IBM Software Group
45
http://tuscany.apache.org
Apache Tuscany Resources
 Apache Tuscany
 http://tuscany.apache.org
 Getting Involved
 http://tuscany.apache.org/getting-involved.html
 Tuscany SCA Java Releases
 http://tuscany.apache.org/sca-java-2x-releases.html
 http://tuscany.apache.org/sca-java-releases.html
 Tuscany SCA Java Documentation
 http://tuscany.apache.org/java-sca-documentation-menu.html
 Tuscany Dashboard
 http://tuscany.apache.org/tuscany-dashboard.html
Open Source SOA: SCA and SDO
http://tuscany.apache.org
IBM Software Group
46
Getting Involved
with Apache Nuvem
IBM Software Group
47
http://tuscany.apache.org
Apache Nuvem Resources
 Apache Nuvem
 http://incubator.apache.org/nuvem/
 Getting Involved
 http://incubator.apache.org/nuvem/nuvem-getting-involved.html
IBM Software Group
48
http://tuscany.apache.org
Thank You !!!

Weitere ähnliche Inhalte

Was ist angesagt?

Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Edureka!
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 DemystifiedAnkara JUG
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Hamed Hatami
 
JEE Course - JEE Overview
JEE Course - JEE  OverviewJEE Course - JEE  Overview
JEE Course - JEE Overviewodedns
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom Joshua Long
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking TourJoshua Long
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012Arun Gupta
 
Spring MVC
Spring MVCSpring MVC
Spring MVCyuvalb
 
Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...
Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...
Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...Edureka!
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Jagadish Prasath
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introductionejlp12
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the clientSebastiano Armeli
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Arun Gupta
 
Java ee 7 New Features
Java ee 7   New FeaturesJava ee 7   New Features
Java ee 7 New FeaturesShahzad Badar
 
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)Kazuyuki Kawamura
 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0Arun Gupta
 

Was ist angesagt? (20)

CV_PrasantKumar
CV_PrasantKumarCV_PrasantKumar
CV_PrasantKumar
 
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 Demystified
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)
 
JEE Course - JEE Overview
JEE Course - JEE  OverviewJEE Course - JEE  Overview
JEE Course - JEE Overview
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...
Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...
Servlet Tutorial | JSP Tutorial | Advanced Java Tutorial | Java Certification...
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the client
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0
 
Java ee 7 New Features
Java ee 7   New FeaturesJava ee 7   New Features
Java ee 7 New Features
 
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
 
Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0
 

Andere mochten auch

Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The FactLuciano Resende
 
How mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open sourceHow mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open sourceLuciano Resende
 
Building RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSBuilding RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSLuciano Resende
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyLuciano Resende
 
Building Asynchronous Services With Sca
Building Asynchronous Services With ScaBuilding Asynchronous Services With Sca
Building Asynchronous Services With ScaLuciano Resende
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitionsLuciano Resende
 
Luciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conferenceLuciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conferenceLuciano Resende
 
How mentoring can help you start contributing to open source
How mentoring can help you start contributing to open sourceHow mentoring can help you start contributing to open source
How mentoring can help you start contributing to open sourceLuciano Resende
 
Writing Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache BahirWriting Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache BahirLuciano Resende
 
SystemML - Declarative Machine Learning
SystemML - Declarative Machine LearningSystemML - Declarative Machine Learning
SystemML - Declarative Machine LearningLuciano Resende
 

Andere mochten auch (11)

Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The Fact
 
How mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open sourceHow mentoring programs can help newcomers get started with open source
How mentoring programs can help newcomers get started with open source
 
Building RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSBuilding RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RS
 
SCA Reaches the Cloud
SCA Reaches the CloudSCA Reaches the Cloud
SCA Reaches the Cloud
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
 
Building Asynchronous Services With Sca
Building Asynchronous Services With ScaBuilding Asynchronous Services With Sca
Building Asynchronous Services With Sca
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitions
 
Luciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conferenceLuciano Resende's keynote at Apache big data conference
Luciano Resende's keynote at Apache big data conference
 
How mentoring can help you start contributing to open source
How mentoring can help you start contributing to open sourceHow mentoring can help you start contributing to open source
How mentoring can help you start contributing to open source
 
Writing Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache BahirWriting Apache Spark and Apache Flink Applications Using Apache Bahir
Writing Apache Spark and Apache Flink Applications Using Apache Bahir
 
SystemML - Declarative Machine Learning
SystemML - Declarative Machine LearningSystemML - Declarative Machine Learning
SystemML - Declarative Machine Learning
 

Ähnlich wie Building apps with tuscany

ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyJean-Sebastien Delfino
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Codemotion
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyJean-Sebastien Delfino
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop OverviewShubhra Kar
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopJimmy Guerrero
 
Using state-engine-as-sca-component-final
Using state-engine-as-sca-component-finalUsing state-engine-as-sca-component-final
Using state-engine-as-sca-component-finalGuido Schmutz
 
Jax WS JAX RS and Java Web Apps with WSO2 Platform
Jax WS JAX RS and Java Web Apps with WSO2 PlatformJax WS JAX RS and Java Web Apps with WSO2 Platform
Jax WS JAX RS and Java Web Apps with WSO2 PlatformWSO2
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforcedeimos
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Mindfire Solutions
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersBurr Sutter
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomQConLondon2008
 
Web services in java
Web services in javaWeb services in java
Web services in javamaabujji
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
WSO2 SOA with C and C++
WSO2 SOA with C and C++WSO2 SOA with C and C++
WSO2 SOA with C and C++WSO2
 
Nasdanika Foundation Server
Nasdanika Foundation ServerNasdanika Foundation Server
Nasdanika Foundation ServerPavel Vlasov
 
From SOA to SCA and FraSCAti
From SOA to SCA and FraSCAtiFrom SOA to SCA and FraSCAti
From SOA to SCA and FraSCAtiphilippe_merle
 
SOA with C, C++, PHP and more
SOA with C, C++, PHP and moreSOA with C, C++, PHP and more
SOA with C, C++, PHP and moreWSO2
 
Web API or WCF - An Architectural Comparison
Web API or WCF - An Architectural ComparisonWeb API or WCF - An Architectural Comparison
Web API or WCF - An Architectural ComparisonAdnan Masood
 

Ähnlich wie Building apps with tuscany (20)

ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache Tuscany
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js Workshop
 
Using state-engine-as-sca-component-final
Using state-engine-as-sca-component-finalUsing state-engine-as-sca-component-final
Using state-engine-as-sca-component-final
 
Jax WS JAX RS and Java Web Apps with WSO2 Platform
Jax WS JAX RS and Java Web Apps with WSO2 PlatformJax WS JAX RS and Java Web Apps with WSO2 Platform
Jax WS JAX RS and Java Web Apps with WSO2 Platform
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforce
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java Developers
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
 
Web services in java
Web services in javaWeb services in java
Web services in java
 
Resthub
ResthubResthub
Resthub
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
WSO2 SOA with C and C++
WSO2 SOA with C and C++WSO2 SOA with C and C++
WSO2 SOA with C and C++
 
Nasdanika Foundation Server
Nasdanika Foundation ServerNasdanika Foundation Server
Nasdanika Foundation Server
 
Intro to Laravel 4
Intro to Laravel 4Intro to Laravel 4
Intro to Laravel 4
 
From SOA to SCA and FraSCAti
From SOA to SCA and FraSCAtiFrom SOA to SCA and FraSCAti
From SOA to SCA and FraSCAti
 
SOA with C, C++, PHP and more
SOA with C, C++, PHP and moreSOA with C, C++, PHP and more
SOA with C, C++, PHP and more
 
Web API or WCF - An Architectural Comparison
Web API or WCF - An Architectural ComparisonWeb API or WCF - An Architectural Comparison
Web API or WCF - An Architectural Comparison
 

Mehr von Luciano Resende

A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfLuciano Resende
 
Using Elyra for COVID-19 Analytics
Using Elyra for COVID-19 AnalyticsUsing Elyra for COVID-19 Analytics
Using Elyra for COVID-19 AnalyticsLuciano Resende
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Luciano Resende
 
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...Luciano Resende
 
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksAi pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksLuciano Resende
 
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayStrata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayLuciano Resende
 
Scaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloadsScaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloadsLuciano Resende
 
Jupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway OverviewJupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway OverviewLuciano Resende
 
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeInteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeLuciano Resende
 
IoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache BahirIoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache BahirLuciano Resende
 
Getting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache BahirGetting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache BahirLuciano Resende
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examplesLuciano Resende
 
Building analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernelsBuilding analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernelsLuciano Resende
 
Building iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache BahirBuilding iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache BahirLuciano Resende
 
An Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache SparkAn Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache SparkLuciano Resende
 
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017Luciano Resende
 
What's new in Apache SystemML - Declarative Machine Learning
What's new in Apache SystemML  - Declarative Machine LearningWhat's new in Apache SystemML  - Declarative Machine Learning
What's new in Apache SystemML - Declarative Machine LearningLuciano Resende
 
Big analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel GatewayBig analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel GatewayLuciano Resende
 
Jupyter con meetup extended jupyter kernel gateway
Jupyter con meetup   extended jupyter kernel gatewayJupyter con meetup   extended jupyter kernel gateway
Jupyter con meetup extended jupyter kernel gatewayLuciano Resende
 

Mehr von Luciano Resende (20)

A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdf
 
Using Elyra for COVID-19 Analytics
Using Elyra for COVID-19 AnalyticsUsing Elyra for COVID-19 Analytics
Using Elyra for COVID-19 Analytics
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
From Data to AI - Silicon Valley Open Source projects come to you - Madrid me...
 
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooksAi pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooks
 
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise GatewayStrata - Scaling Jupyter with Jupyter Enterprise Gateway
Strata - Scaling Jupyter with Jupyter Enterprise Gateway
 
Scaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloadsScaling notebooks for Deep Learning workloads
Scaling notebooks for Deep Learning workloads
 
Jupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway OverviewJupyter Enterprise Gateway Overview
Jupyter Enterprise Gateway Overview
 
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for CodeInteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for Code
 
IoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache BahirIoT Applications and Patterns using Apache Spark & Apache Bahir
IoT Applications and Patterns using Apache Spark & Apache Bahir
 
Getting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache BahirGetting insights from IoT data with Apache Spark and Apache Bahir
Getting insights from IoT data with Apache Spark and Apache Bahir
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examples
 
Building analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernelsBuilding analytical microservices powered by jupyter kernels
Building analytical microservices powered by jupyter kernels
 
Building iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache BahirBuilding iot applications with Apache Spark and Apache Bahir
Building iot applications with Apache Spark and Apache Bahir
 
An Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache SparkAn Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
An Enterprise Analytics Platform with Jupyter Notebooks and Apache Spark
 
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
The Analytic Platform behind IBM’s Watson Data Platform - Big Data Spain 2017
 
What's new in Apache SystemML - Declarative Machine Learning
What's new in Apache SystemML  - Declarative Machine LearningWhat's new in Apache SystemML  - Declarative Machine Learning
What's new in Apache SystemML - Declarative Machine Learning
 
Big analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel GatewayBig analytics meetup - Extended Jupyter Kernel Gateway
Big analytics meetup - Extended Jupyter Kernel Gateway
 
Jupyter con meetup extended jupyter kernel gateway
Jupyter con meetup   extended jupyter kernel gatewayJupyter con meetup   extended jupyter kernel gateway
Jupyter con meetup extended jupyter kernel gateway
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
 

Kürzlich hochgeladen

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Kürzlich hochgeladen (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Building apps with tuscany

  • 1. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 1 Building Applications with Apache Tuscany Luciano Resende lresende@apache.org http://lresende.blogspot.com Jean-Sebastien Delfino jsdelfino@apache.org http://jsdelfino.blogspot.com Simon Laws slaws@apache.org
  • 2. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 2 Abstract Building and composing the components of a distributed application can be a challenge and complex bespoke solutions are commonplace. The Apache Tuscany runtime, and the Service Component Architecture (SCA) on which the runtime is based, simplify the process by presenting a component based application assembly model. In this talk we look at the Tuscany travel booking application and explain how the individual components of the application are constructed using a variety of technologies including Java, Spring, BPEL and Python. We also look at how these services are wired together using a variety of communication protocols such as SOAP/HTTP and JSON-RPC. The complete model can then be deployed to both stand-alone and distributed runtimes without changes to the application itself.
  • 3. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 3 Agenda  Service Component Architecture  Apache Tuscany  TuscanySCATours, a Sample Travel Booking App  Development Process  Packaging, Build, Test  Extending the App o Bindings o Spring o BPEL o Policies  Deploying to an SCA Domain  Getting Involved
  • 4. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 4 SCA and Apache Tuscany
  • 5. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 5 Enterprise App Development - History Time Web Services  services  service Interfaces X business logic mixed with tech APIs X no Components X no policy model Service Component Architecture (SCA)  service Components  business logic shielded from tech APIs  reusable components in multiple programming languages  easy to assemble into compositions  easy to bind to different protocols  external policy configuration Flexibility Agility ROI Monolithic X business logic mixed with communication logic X no service interfaces X no components X no policies SCA and Cloud Computing  elastic composites  more componentization  portability across clouds  easy to wire, rewire, reconfigure  policies and Provisioning
  • 6. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 6 SCA Assembly Model Composite A Component AService Service Binding Web Service JMS SLSB Rest JSONRPC JCA … Reference Binding Web Service JMS SLSB Rest JSONRPC JCA … Component B Service Interface - Java - WSDL Reference Interface Reference property setting Property promotepromote wire Implementation Java BPEL PHP SCA composite Spring EJB module … - Java - WSDL
  • 7. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 7 Assembly Implementation Languages Policy Framework Bindings Java Java EE Spring C++ BPEL Security RM Transactions Web services JMS JCA SCA Specifications SCA is going through a formal standardization process at OASIS OpenCSA (http://www.oasis-opencsa.org)
  • 8. 8 Open Source SOA http://tuscany.apache.org OASIS Open CSA - http://www.oasis-opencsa.org/
  • 9. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 9 Apache Tuscany  Apache Tuscany provides a component based programming model which simplifies development, assembly and deployment and management of composite applications.  Apache Tuscany implements SCA standards defined by OASIS OpenCSA + extensions based on community feedback. 9
  • 10. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 10 TuscanySCATours Sample Travel Booking Application
  • 11. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 11 Tuscany SCA In Action  Example from Tuscany Book  http://www.manning.com/laws/ Example can be downloaded from Apache Tuscany  http://tuscany.apache.org/sca-java-travel-sample-1x-releases.html
  • 12. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 12 The TuscanySCATours Shopping Site
  • 13. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 13 TuscanySCATours App on a Napkin >ls -lsa UI Partner Coordination Trip Hotel Flight Car Partners Shopping Cart Payment Credit Card Payment Partner Links to other organizations
  • 14. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 14 Map to SCA composites and components Payment composite component referenceservice As an SCA composite: Payment Java payment Payment creditCard Payment EmailGateway Java Email Gateway email Gateway CustomerRegistry Java Customer Registry customer Registry transactionFee property
  • 15. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 15 Prototype and Fill in the Blanks Very easy to create simple components, wire them together and get them running Doing this with simple implementations allows you to get a feel for the app without implementing all of the moving parts in detail A quick way to prototype an app and define the important components and their service interfaces The prototype components can then be distributed to a team for detailed implementation and testing
  • 16. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 16 Payment Java Component Implementation @Service(Payment.class) public class PaymentImpl implements Payment { @Reference protected CustomerRegistry customerRegistry; @Reference protected CreditCardPayment creditCardPayment; @Reference protected EmailGateway emailGateway; @Property protected float transactionFee = 0.01f; public String makePaymentMember(String customerId, float amount) { try { Customer customer = customerRegistry.getCustomer(customerId); String status = creditCardPayment.authorize(customer.getCreditCard(), amount + transactionFee); emailGateway.sendEmail("order@tuscanyscatours.com", customer.getEmail(), "Status for your payment", customer + " >>> Status = " + status); return status; } catch (CustomerNotFoundException ex) { return "Payment failed due to " + ex.getMessage(); } catch (AuthorizeFault_Exception e) { return e.getFaultInfo().getErrorCode(); } catch (Throwable t) { return "Payment failed due to system error " + t.getMessage(); } } }
  • 17. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 17 Payment Composite <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://tuscanyscatours.com/" name="payment"> <component name="Payment"> <implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" /> <service name="Payment"/> <reference name="customerRegistry" target="CustomerRegistry" /> <reference name="creditCardPayment" /> <reference name="emailGateway" target="EmailGateway" /> <property name="transactionFee">0.02</property> </component> <component name="CustomerRegistry"> <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" /> </component> <component name="EmailGateway"> <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" /> </component> </composite>
  • 18. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 18 SCA and WS Bindings Payment CreditCard Payment EmailGateway Java Java creditcard Java payment Payment Email Gateway CreditCard Payment creditCard Payment email Gateway CustomerRegistry Java Customer Registry customer Registry transactionFee (8081) (8082) binding.ws binding.sca binding.ws binding.ws binding.sca binding.sca binding.sca
  • 19. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 19 SCA Payment Composite – with WS Bindings <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://tuscanyscatours.com/" name="payment"> <component name="Payment"> <implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" /> <service name="Payment"> <binding.ws uri="http://localhost:8081/Payment" /> </service> <reference name="customerRegistry" target="CustomerRegistry" /> <reference name="creditCardPayment"> <binding.ws uri="http://localhost:8082/CreditCardPayment" /> </reference> <reference name="emailGateway" target="EmailGateway" /> <property name="transactionFee">0.02</property> </component> <component name="CustomerRegistry"> <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" /> </component> <component name="EmailGateway"> <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" /> </component> </composite>
  • 20. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 20 Web 2.0 Bindings and Widget Components Web 2.0 bindings: REST, JSON, JSONRPC, DWR, Feeds (ATOM, RSS) Tuscany Widget implementation representing Web components, with Javascript dependency injection Other scripting implementation types
  • 21. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 21 SCA Payment Composite – JSON-RPC Bindings <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://tuscanyscatours.com/" name="payment"> <component name="Payment"> <implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" /> <service name="Payment"> <binding.jsonrpc uri="http://localhost:8081/Payment" /> </service> <reference name="customerRegistry" target="CustomerRegistry" /> <reference name="creditCardPayment"> <binding.jsonrpc uri="http://localhost:8082/CreditCardPayment" /> </reference> <reference name="emailGateway" target="EmailGateway" /> <property name="transactionFee">0.02</property> </component> <component name="CustomerRegistry"> <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" /> </component> <component name="EmailGateway"> <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" /> </component> </composite>
  • 22. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 22 Packaging and Deployment  Service implementations are deployed into an SCA Domain  Represents the SCA runtime configuration  In general heterogeneous with distributed SCA runtime Nodes.  Defines the scope of what can be connected by SCA Wires  SCA Domain configuration is a Domain Composite  Final configuration for service dependencies, properties, bindings, policies  Implementation artifacts and their configuration added to a Domain as Contributions  Many packaging formats (JAR, ZIP, Folder etc.)  Artifacts (Classes, XSD, WSDL, BPEL etc.) may be shared between Contributions
  • 23. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 23 Building Contributions with Maven  Using Maven project layout, place composites, component implementations, interfaces and other required artifacts together Use mvn eclipse:eclipse to build an Eclipse project
  • 24. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 24 Developing in Eclipse To import an SCA contribution built using Maven into Eclipse  Set M2_REPO  Import your contribution project previously built using mvn eclipse:eclipse If you're building an SCA contribution from scratch in Eclipse, add a dependency on the Tuscany runtime Jars  An easy way to do this is to create an Eclipse user defined library that includes all the Tuscany Jars and dependencies, and add this library to your new contribution
  • 25. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 25 Payment-java Contribution in Eclipse
  • 26. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 26 Running in a Single JVM To test payment-java we need three more things  The creditcard-payment-jaxb contribution. This contains the composite that defines the CreditCardPayment service that the Payment component references  The launcher-payment-java project that loads these two contributions into Tuscany and then calls the Payment component  The util-launcher-common project which contains a few utilities that we wrote for the TuscanySCATours application
  • 27. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 27 Embedding Tuscany public class PaymentLauncher { public static void main(String[] args) throws Exception { SCANode node = SCANodeFactory.newInstance().createSCANode(null, locate("payment-java"), locate("creditcard-payment-jaxb")); node.start(); SCAClient client = (SCAClient)node; Payment payment = client.getService(Payment.class, "Payment"); System.out.println("Payment Java test"); System.out.println("nSuccessful Payment - Status = nn" + payment.makePaymentMember("c-0", 100.00f)); System.out.println("nnFailed Payment - Status = nn" + payment.makePaymentMember("c-1", 100.00f)); node.stop(); } The locate() operation is a utility we created for this sample which simply locates a contribution in the sample directory structure and returns its location.
  • 28. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 28 Spring Bean Component Implementation Property Name: transactionFee Type: float </bean> </bean> <property name="transactionFee" value="0.5f"/> Payment component type <property name="creditCardPayment" ref="creditCardPaymentReference"/> <bean id="Payment" class="com.tuscanyscatours.payment.impl.PaymentImpl"> Service Name: Payment Interface: payment.Payment Reference Name: creditCardPaymentReference Interface: payment.creditcard.CreditCardPayment
  • 29. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 29 Payment Spring Component Payment CreditCard Payment Spring creditcard Java payment Payment CreditCard Payment creditCard Payment transactionFee (8082) binding.ws binding.ws binding.ws
  • 30. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 30 Payment Spring Context <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sca="http://www.springframework.org/schema/sca" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="Payment" class="com.tuscanyscatours.payment.impl.PaymentImpl"> <property name="creditCardPayment" ref="creditCardPaymentReference"/> <property name="emailGateway" ref="EmailGateway"/> <property name="customerRegistry" ref="CustomerRegistry"/> <property name="transactionFee" value="0.5f"/> </bean> <bean id="CustomerRegistry" class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl"> </bean> <bean id="EmailGateway" class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl"> </bean> </beans>
  • 31. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 31 Payment Composite <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://tuscanyscatours.com/" name="payment"> <component name="Payment"> <implementation.spring location="Payment-context.xml"/> <service name="Payment"> <binding.ws uri="http://localhost:8081/Payment"/> </service> <reference name="creditCardPaymentReference"> <binding.ws uri="http://localhost:8082/CreditCardPayment"/> </reference> <property name="transactionFee">1.23</property> </component> </composite>
  • 32. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 32 BPEL Process Component Implementation ShoppingCart Payment Payment Process Email Gateway implementation.bpel <variable/> <partnerLink/> <partnerLink/> <partnerLink/> <process> <sequence> <receive/> ... <invoke/> ... <invoke/> ... <reply/> </sequence> </process> reference referenceservice property
  • 33. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 33 Payment BPEL Process Component Payment CreditCard Payment EmailGateway BPEL Java creditcard Java payment Payment Email Gateway CreditCard Payment creditCard Payment email Gateway CustomerRegistry Java Customer Registry customer Registry transactionFee (8081) (8082) binding.ws binding.sca binding.ws binding.ws binding.sca binding.sca binding.sca
  • 34. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 34 Payment BPEL process <process name="Payment" targetNamespace="http://www.tuscanyscatours.com/Payment" ...> <import location="Payment.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" namespace="http://www.tuscanyscatours.com/Payment/"/> <import location="CreditCardPayment.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" namespace="http://www.tuscanyscatours.com/CreditCardPayment/"/> <import location="EmailGateway.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" namespace="http://www.tuscanyscatours.com/EmailGateway/"/> <partnerLinks> <partnerLink name="paymentPartnerLink" partnerLinkType="pp:PaymentLinkType" myRole="forward" /> <partnerLink name="creditCardPaymentPartnerLink" partnerLinkType="ccp:CreditCardPaymentLinkType" partnerRole="forward" initializePartnerRole="yes" /> <partnerLink name="emailGatewayPartnerLink" partnerLinkType="eg:EmailGatewayLinkType" partnerRole="forward" initializePartnerRole="yes" /> </partnerLinks> <variables> <variable name="makePaymentMemberRequestMessage" messageType="pp:MakePaymentMemberRequest"/> <variable name="makePaymentMemberResponseMessage" messageType="pp:MakePaymentMemberResponse"/> .... </variables> <sequence> <receive name="start" partnerLink="paymentPartnerLink" portType="pp:Payment" operation="makePaymentMember" variable="makePaymentMemberRequestMessage" createInstance="yes"/>
  • 35. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 35 Payment Composite <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0" xmlns:pp="http://www.tuscanyscatours.com/Payment" targetNamespace="http://www.tuscanyscatours.com/Payment" name="payment"> <component name="Payment"> <implementation.bpel process="pp:Payment"/> <service name="paymentPartnerLink"> <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" /> <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/> </service> <reference name="creditCardPaymentPartnerLink"> <binding.ws uri="http://localhost:8082/CreditCardPayment"/> </reference> <reference name="emailGatewayPartnerLink"> <binding.ws uri="http://localhost:8088/EmailGateway"/> </reference> </component> </composite>
  • 36. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 36 SCA Policies Payment CreditCard Payment EmailGateway Spring Java creditcard Java payment Authentication Payment Email Gateway CreditCard Payment creditCard Payment email Gateway CustomerRegistry Java Customer Registry customer Registry transactionFee (8081) (8082) Authentication binding.ws binding.sca binding.ws binding.ws binding.sca binding.sca binding.sca
  • 37. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 37 Adding Policy Intents <component name="Payment"> <implementation.spring location="Payment-context.xml"/> <service name="Payment"> <binding.ws uri="http://localhost:8081/Payment"/> </service> <reference name="creditCardPaymentReference" > <binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/> </reference> <reference name="emailGateway" target="EmailGateway"/> <reference name="customerRegistry" target="CustomerRegistry"/> <property name="transactionFee">1.23</property> </component> <component name="CreditCardPayment"> <implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" /> <service name="CreditCardPayment"> <interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)" /> <binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/> <binding.sca/> </service> </component>
  • 38. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 38 Defining policy sets <definitions xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://www.osoa.org/xmlns/sca/1.0" xmlns:sca="http://www.osoa.org/xmlns/sca/1.0" xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"> <policySet name="BasicAuthenticationPolicySet" provides="authentication" appliesTo="sca:binding.ws"> <tuscany:basicAuthentication> <tuscany:userName>myname</tuscany:userName> <tuscany:password>mypassword</tuscany:password> </tuscany:basicAuthentication> </policySet> </definitions>
  • 39. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 39 Adding more components - 1 TuscanySCA ToursUser Interface TravelCatalog TripBooking ShoppingCart Hotel Partner Flight Partner Car Partner Currency Converter Trip Partner Java Java Java Java Java widget (8080) fullapp-coordination fullapp-packagedtrip fullapp-bespoketrip fullapp-currency fullapp-shoppingcart Java Java Java CartStore Java >ls -lsa SCATours Java LoggingquoteCurrency Code TravelCatalog Search TripBooking SCATours Booking SCATours Cart SCATours Search Search Search Search Search Book Book Book Book Currency Converter Cart Updates Cart Initialize CartStore trip Search hotel Search flight Search car Search currency Converter trip Book hotel Book flight Book car Book car Book cart Updates scaTours Search scaTours Booking scaTours Cart travelCatalog Search tripBooking cartInitialize payment cartStore cartCheckout Cart Checkout to Payment component (8085) fullapp-ui (8084) (8083) (8086) (8087)
  • 40. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 40 Adding more components - 2 Payment CreditCard Payment EmailGateway Spring Java creditcard Java payment Authentication Payment Email Gateway CreditCard Payment creditCard Payment email Gateway CustomerRegistry Java Customer Registry customer Registry from ShoppingCart component transactionFee (8081) (8082) Authentication
  • 41. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 41 SCA Domain A distributed deployment of the assembly.
  • 42. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 42 Running Multiple Tuscany Nodes public class FullAppNodesLauncher { public static void main(String[] args) throws Exception { SCANode nodeCreditcard = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/creditcard"); nodeCreditcard.start(); SCANode nodePayment = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/payment"); nodePayment.start(); SCANode nodeShoppingcart = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/shoppingcart"); nodeShoppingcart.start(); SCANode nodeCurrency = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/currency"); nodeCurrency.start(); SCANode nodePackagedtrip = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/packagedtrip"); nodePackagedtrip.start(); SCANode nodeBespoketrip = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/bespoketrip"); nodeBespoketrip.start(); SCANode nodeFrontend = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/coordination"); nodeFrontend.start(); SCANode nodeUI = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/ui"); nodeUI.start(); ... }
  • 43. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 43 Getting Involved with Apache Tuscany
  • 44. IBM Software Group 44 http://tuscany.apache.org SCA - Resources  Good introduction to SCA  http://www.davidchappell.com/articles/Introducing_SCA.pdf  OASIS Open CSA – http://www.oasis-opencsa.org  V1.1 level specs  http://www.oasis-opencsa.org/sca  Open CSA Technical Committees  http://www.oasis-opencsa.org/committees  OSOA  http://osoa.org/display/Main/Home  More information on that site  http://osoa.org/display/Main/SCA+Resources
  • 45. IBM Software Group 45 http://tuscany.apache.org Apache Tuscany Resources  Apache Tuscany  http://tuscany.apache.org  Getting Involved  http://tuscany.apache.org/getting-involved.html  Tuscany SCA Java Releases  http://tuscany.apache.org/sca-java-2x-releases.html  http://tuscany.apache.org/sca-java-releases.html  Tuscany SCA Java Documentation  http://tuscany.apache.org/java-sca-documentation-menu.html  Tuscany Dashboard  http://tuscany.apache.org/tuscany-dashboard.html
  • 46. Open Source SOA: SCA and SDO http://tuscany.apache.org IBM Software Group 46 Getting Involved with Apache Nuvem
  • 47. IBM Software Group 47 http://tuscany.apache.org Apache Nuvem Resources  Apache Nuvem  http://incubator.apache.org/nuvem/  Getting Involved  http://incubator.apache.org/nuvem/nuvem-getting-involved.html