Coder Social home page Coder Social logo

aapdomingues / full-example-ee7-jca-eis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dlmiles/full-example-ee7-jca-eis

0.0 1.0 0.0 239 KB

A Java EE7 JCA example project with testing

License: GNU General Public License v2.0

Java 100.00%

full-example-ee7-jca-eis's Introduction

This is a full API example of a Java EE7, JCA.

Although the project currently uses EE6 dependencies, until I understand and indentify new features for EE7, so they can be added and documented as such.

Project License: GPL v2

ee7-jca-eis-impl This is the EIS implementation. This mimics an external resource (that the Application Server) does not natively understand. This resource is capable of two-way messaging and transactions.

ee7-jca-eis-rar-impl This is the JCA/RAR implementation. This contains the various Java *.class libraries needed to adapt and convert the APIs of the ee7-jca-eis-impl into the JCA API so that the application server can manage/deploy this information source.

ee7-jca-eis-rar This is the packaging and deployment into a RAR of: ee7-jca-eis-impl ee7-jca-eis-rar-impl This project produces a JAR that has everything an application server needs to deploy this EIS type.

ee7-jca-eis-ejb This is the EJB MDB consumer project. This project is an example of your business logic consumer of the EIS.

ee7-jca-eis-ear This is the EAR packaging of both the JCA and EJB to put the two halves together to allow.

The questions that this project tries to resolve:

  1. How to package up a JCA implementation, EJB consumer, EAR to deploy into JBoss/WildFly AppServer.

    The implementation attempts to exercise many of the new features of recent EE specifications.

    The EIS should be allowed to manage its own threads, these threads are both short running (performing some operation against the AppServer) and long running (such as persistent reusable/pooled network connections).

    The EIS should be able to fire messages from EIS to AppServer, when processing these messages they may simply be consumed, or there maybe a callback.

    The AppServer should be able to locate/resolve the EIS and then fire messages at the EIS to process.

    The EIS should be able to

    Some customer JBoss code should be able to access jboss-threads custom APIs to do even more exotic stuff. Where to hook into JCA lifecycle to ensure a proper startup and shutdown sequence for those implementation detail threads.

  2. Is it possible to deploy the JCA implementation separately (outside of EAR) but inside the same Application Server JVM ? So that is is consumed entirely via JNDI and Proxies. With the container managing it ?

The question here is what are all the possible deployment modes ? And what changes are required in the project to accomodate each method ?

*) Deploy JCA/RAR as a standalone JAR that is globally accessible and can be activated and consumed by any other EAR/WAR (or other deployment) ?

*) Deploy JCA/RAR inside EAR ?

  1. How to configure META-INF/jboss-deployment-structure.xml of the various projects ?

    How to manage module naming best inside this XML. It really is a pain to see "0.0.1-SNAPSHOT" in the name, OSGi has Bundle-Symbolic-Name and Bundle-Version to provide arbitrary naming and version control of other modules. It also has tooling to manage and verify itself.

    How can this be made easier to manage in a project so it takes care of itself, is not error prone, always does the correct thing or fails as early as possible (ideally during Maven building, not during deployment testing).

  2. How to configure META-INF/jboss-ejb3.xml inside the EJB project.

    A goal of the project is that it should not use any JBoss specific java code. So that porting it to run on another compliant EE Application Server requires minimal work. This means not using any custom JBoss annotations. It is allowed that additional files can be in the deployment, since a different application server will simply ignore those files.

    In this project the META-INF/jboss-ejb3.xml is used to describe to the AS which JCA implementation is expected for a particular EJB consumer.

  3. The EIS is a simplistic file based store of data.

    The EIS should capable of participating within AppServer transactions.

    Some EIS APIs might be transaction-less, meaning they will never cause an error during the 2 stage commit, but if they must be part of the transaction they will go through the motions, but the API consumer should not expect REPEATIBLE-READ behaviour. So maybe there are some optimizations to inform the AppServer transaction layer of this.

  4. Is there anything special the EIS needs to manage to participate in XA transactions ?

  5. What changes are needed to project to demonstrate deployment on at least one other Application Server implementation ?

?) Document/explain relevant usage of META-INF/MANIFEST.MF and "Dependencies:" header ?

?) Document/explain relevant usage of META-INF/ironjacamar.xml ?

full-example-ee7-jca-eis's People

Contributors

dlmiles avatar aslakknutsen avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.