Developing J2EE Connector Architecture

Download Report

Transcript Developing J2EE Connector Architecture

Developing J2EE
Connector Architecture
David Lucas
President
Lucas Software Engineering, Inc
[email protected]
Agenda
• Introduction
• What is a Connector?
• Overview of Sun’s JCA
• VisiConnect
• Deployment to BES
• Client Interface
• Demo
• Summary
Introduction
• Welcome
• Application Servers
• JDBC
• Enterprise Information System
What is a Connector?
• Like a bridge, it attaches two ends
together, J2EE and EIS
Connector
AppServer
EIS
Resource
Adapter
Overview - Terms
• EIS Resource (CICS, SAP, …)
• Resource Manager
• Managed Environment
• Non-Managed Environment
Overview of Sun’s JCA
• Part of J2EE 1.3 Specification, Latest
now JCA 1.1
• Provide plug and play integration
between EIS and J2EE AppServers
• Simplifies EIS vendor work
• System Contracts
• Common Client Interface (CCI)
• Deployment (RARs)
Overview of Sun’s JCA
Overview - Connectors
• TIBCO
• IBM MQ Series
• Hogan
• IBM CICS ECI
• JD Edwards
• Lawson
PeopleSoft
SAP
Siebel
IMS / VSAM or other data
records
B2B SOAP or XML-RPC
Overview - Potential Tools
• Actional
• Attunity
• Borland
• CrossWorlds
• IONA
• Merant
Mercator
Sybase / NEON
TIBCO
Vitria
webMethods
WRQ
Overview - System Contracts
• Security Management
•
EIS Signon via JAAS
• Transaction Management
•
1PC & 2PC
• Container Managed
• Component Managed
• Connection Management
•
Pooling
• Error Logging & Tracing
•
Connection Event Notification
Overview - Deployment
• J2EE Resource Archive
• Resource Adapter with embedded
JAR and Native files
• RA.XML Descriptor
• JNDI-Definition Descriptor (vendor)
Overview - Deployment Roles
• Resource Adapter Provider (EIS
Vendor)
• Application Server / Container
Provider (Borland and others)
• Component Provider (EJB
implementations that take advantage
of the Connector)
Overview - CCI
• Remote Function Call Interface
(similar to JDBC)
• Independent and Consistent (vendor
neutral)
• Optional support for Service Provider
Interfaces
• Execute Interactions with Records for
Input and Output
• Supports Result Record Sets
VisiConnect
• JCA 1.0 spec now approved
• Borland VisiConnect is available now
• Provides Management of Resource
Adapters
• Currently supports basic password
security
Deployment to BES
• RAR file is created to package
classes, interfaces, and native files
• RA and JNDI Deployment descriptors
describe meta information
• Can deploy to BES as standalone or
as part of an EAR
Deployment Strategy
• EJB Session wraps EIS Vendor access
Client
AppServer
AppServer
EJB Session Bean
AppServer
Resource Adapter
EIS
CORBA
Client Invocation
• Obtain factory context and get Connection
to Resource Adapter
• Create Interaction (like JDBC Statement)
• Get Record Factory and create input and
output Records as needed (like JDBC
Result Set layout)
• Create Interaction Spec that maps function
to execute with records
• Invoke execute and retrieve results
Client Invocation
• Obtain factory context and get Connection
to Resource Adapter
javax.naming.Context context = new InitialContext();
ConnectionFactory cxfactory = (ConnectionFactory)
context.lookup(“java:comp/eis/MyEIS”);
Client Invocation
• Create Interaction (like JDBC Statement)
• Get Record Factory and create input and
output Records as needed (like JDBC
Result Set layout)
Interaction ix=cx.createInteration();
RecordFactory rfact=cxfactory.getRecordFactory();
MappedRecord input=rfact.createMappedRecord("INPUT");
IndexedRecord output= rfact.createIndexedRecord("OUTPUT");
Client Invocation
• Create Interaction Spec that maps function
to execute with records
• Invoke execute and retrieve results
InteractionSpec ixSpec = new my.eis.InteractionSpec();
ixSpec.setFunctionName("INQUERY");
boolean response = ix.execute(ixSpec, input, output);
Resource Adapter
• Execute on the Resource side
class MyInteraction implements Interaction { ...
public boolean execute(ixSpec, input, output)
throws ResourceException
{
boolean success = false;
// grab input
// execute EIS business logic
// map output
return success;
}
…
}
Resource Adapter Descriptor
<connector>
<display-name>MyResourceAdapter</display-name>
<vendor-name>ACME Software</vendor-name>
<spec-version>1.0</spec-version>
<eis-type>JDBC Database</eis-type>
<version>1.0</version>
<resourceadapter>
<managedconnectionfactory-class>com.acme.ConFactory</managedconnectionfactory-class>
<connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactoryinterface>
<connectionfactory-impl-class>com.acme.ConFactImpl</connectionfactory-impl-class>
<connection-interface>javax.resource.cci.Connection</connection-interface>
<connection-impl-class>com.acme.CciConnection</connection-impl-class>
<transaction-support>local_transaction</transaction-support>
...
</connector>
Resource Adapter JNDI Objects
<jndi-definitions>
<jndi-object>
<jndi-name>java:comp/env/eis/ACMEResource</jndi-name>
<class-name>com.acme.ConFact</class-name>
<property>
<prop-name>userName</prop-name>
<prop-type>java.lang.String</prop-type>
<prop-value>test</prop-value>
</property>
<property>
<prop-name>password</prop-name>
<prop-type>java.lang.String</prop-type>
<prop-value>test</prop-value>
</property>
</jndi-object>
</jndi-definitions>
Resource Adapter ejb-jar.xml
<ejb-jar>
<enterprise-beans>
<session>
...
<resource-env-ref>
<description>ACMEResource</description>
<res-env-ref-name>eis/ACMEResource</res-ref-name>
<res-env-type>javax.resource.cci.ConnectionFactory</res-type>
</resource-ref>
</session>
...
</ejb-jar>
Resource Adapter ejb-borland.xml
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Shell</ejb-name>
<bean-home-name>Shell</bean-home-name>
<resource-ref>
<res-ref-name>ACMEResource</res-ref-name>
<jndi-name>java:comp/env/eis/ACMEResource</jndi-name>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>eis/ACMEResource</resource-env-ref-name>
<jndi-name>java:comp/env/eis/ACMEResource</jndi-name>
</resource-env-ref>
</session>
</enterprise-beans>
...
</ejb-jar>
DEMO
• JCA to spawn a command shell and
execute the "function"
• Returns result in an output Record
Summary
• JCA for J2EE 1.3 Specification
•
Defines asynchronous API, app servers
should follow with IMPLs
•
Issues with JMS pluggability, stay tuned to
JCA 1.5 spec
(http://www.jcp.org/jsr/detail/112.jsp)
• VisiConnect
•
Working environment in BES 5.x
•
Deployment tools with Jbuilder which
support RARs
Resources
JCA 1.5 JSR 112: http://www.jcp.org/jsr/detail/112.prt
http://java.sun.com/j2ee/connector/
http://www.javaworld.com/javaworld/jw-11-2001/jw-1121-jca.html
http://www.javaworld.com/javaworld/jw-02-2002/jw-0201-jca2.html
http://www.intelligenteai.com/feature/010416/feat1.shtml
Borland VisiConnect:
http://www.borland.com/devsupport/bes/faq/visiconnect/visiconnect.html
Borland Enterprise Server Developers Guide 5
http://www.borland.com/techpubs/books/bes/htmls/DevelopersGuide5/Developer
sGuide/VisiConnectOverview.html
Presentations:
Borland Software Corporation: Charlton Barreto, JavaOne 2002:
- Designing and Developing JavaTM 2 Platform, Enterprise Edition (J2EETM)
Connector
Resources
BEA Systems, Inc: Deb June
- Architecture Applications (TS-1032),
- JavaTM 2 Platform, Enterprise Edition (J2EETM)
Connector Architecture Overview and Futures (TS-2531)
List of Providers:
http://java.sun.com/j2ee/connector/industry.html
Products:
http://java.sun.com/j2ee/connector/products.html
Books:
- J2EE Connector Architecture and Enterprise Application Integration by Rahul Sharma,
Beth Stearns, Tony Ng, Scott Dietzen ISBN 0201775808
- Integrating Java Applications With the Enterprise, by Vijay Sarathy and Rahul Sharma, eAI
Journal, May 2001
- Java Connector Architecture: The Future of EAI, by Mark Hansen and Peter Mamorski,
posted to eAI Journal, May 15, 2001
Questions?
All trademarks in this presentation are those of their respective owners.
Thank You!
Please fill out the speaker evaluation.
You can contact me further at …
[email protected]