300 likes | 446 Views
Connecting to the Enterprise Using VisiConnect. David Lucas President Lucas Software Engineering, Inc DDLUCAS@LSE.COM. Agenda. Introduction What is a Connector? Overview of Sun’s JCA VisiConnect Deployment to BAS Client Interface Summary. Introduction. Welcome Application Servers
E N D
Connecting to the Enterprise Using VisiConnect David Lucas President Lucas Software Engineering, Inc DDLUCAS@LSE.COM
Agenda • Introduction • What is a Connector? • Overview of Sun’s JCA • VisiConnect • Deployment to BAS • Client Interface • Summary
Introduction • Welcome • Application Servers • JDBC • Enterprise Information System
What is a Connector? • Like a bridge, it attaches two ends together, J2EE and EIS EIS AppServer Connector 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 • Provide plug and play integration between EIS and J2EE AppServers • Simplifies EIS vendor work • System Contracts • Common Client Interface (CCI) • Deployment (RARs)
Overview - Potential Connectors • PeopleSoft • SAP • Siebel • IMS / VSAM or other data records • B2B SOAP or XML-RPC • TIBCO • IBM MQ Series • Hogan • IBM CICS ECI • JD Edwards • Lawson
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 is still in draft • Borland VisiConnect is early access • Provides Management of Resource Adapters • Currently supports basic password security
Deployment to BAS • RAR file is created to package classes, interfaces, and native files • RA and JNDI Deployment descriptors describe meta information • Can deploy to BAS as standalone or as part of an EAR
Deployment Strategy • EJB Session wraps EIS Vendor access Client AppServer AppServer EJB Session Bean AppServer CORBA Resource Adapter EIS
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>CciBlackBoxLocalTx</display-name> <vendor-name>Java Software</vendor-name> <spec-version>1.0</spec-version> <eis-type>JDBC Database</eis-type> <version>1.0</version> <resourceadapter> <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory</managedconnectionfactory-class> <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface> <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class> <connection-interface>javax.resource.cci.Connection</connection-interface> <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class> <transaction-support>local_transaction</transaction-support> <config-property> <config-property-name>ConnectionURL</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value>jdbc:borland:dsremote://localhost//home/ddlucas//test.jds</config-property-value> </config-property> <auth-mechanism> <auth-mech-type>basic-password</auth-mech-type> <credential-interface>javax.resource.security.PasswordCredential</credential-interface> </auth-mechanism> <reauthentication-support>false</reauthentication-support> </resourceadapter> </connector>
Resource Adapter JNDI Objects <jndi-definitions> <jndi-object> <jndi-name>serial://eis/JDSResource</jndi-name> <class-name>com.sun.connector.cciblackbox.CciConnectionFactory</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> <ejb-name>JDSResourceTest</ejb-name> <home>untitled2.JDSResourceTestHome</home> <remote>untitled2.JDSResourceTest</remote> <ejb-class>untitled2.JDSResourceTestBean</ejb-class <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <resource-ref> <description>JDSResource Connector</description> <res-ref-name>JDSResource</res-ref-name> <res-type>com.sun.connector.cciblackbox.CciConnectionFactory</res-type> <res-auth>Container</res-auth> </resource-ref> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>JDSResourceTest</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>
Resource Adapter ejb-inprise.xml <inprise-specific> <enterprise-beans> <session> <ejb-name>JDSResourceTest</ejb-name> <bean-home-name>JDSResourceTest</bean-home-name> <resource-ref> <res-ref-name>JDSResource</res-ref-name> <jndi-name>eis/JDSResource</jndi-name> <cmp-resource>False</cmp-resource> </resource-ref> </session> </enterprise-beans> </inprise-specific>
Summary • JCA 1.0 • Still Draft, more is needed in next spec • Support for only synchronous calls • VisiConnect early access • Working environment in BAS 4.5 • Deployment tools with JB 5.0 • Major impact to EIS vendors today • In about a year it will impact integrators that will use Connectors
Questions? All trademarks in this presentation are those of their respective owners.
Thank You! Additional Info - http://www.borland.com- http://java.sun.com/j2ee/connector- 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 Please fill out the speaker evaluation. You can contact me further at … DDLUCAS@LSE.COM