[Design the new POJO MicroContainer] - Re: KernelRegistryPlugins and dependencies
by bill.burke@jboss.com
There are 3 approaches to this I believe
1. Don't have a JNDI dependency, use real dependencies that can be figured out at the DESCRIBE phase.
Advantages: A pure solution.
Disadvantages:
a) Every component will need to change to add supplies
b) Doesn't work with non-JBoss components. Components we don't control. user will have to explicitly say, HEY don't have a dependency for this thing!
c) Doesn't work with remote JNDI bindings
d) This is an all-or-nothing improvement
2. If a component has a JNDI dependency, register a depends with the Kernel of that JNDI name. Add a JNDIRegistryPlugin to the kernel. Extend JBoss JNDI so that listener objects could register for event callbacks. A Bind/unbind listener could install/remove JNDI beans that resolve the dependency
Advantages:
a) Minimal impact to other components (like JCA, etc...)
Disadvantages:
a) Doesn't work with remote JNDI bindings
3. If a component has a JNDI dependency, register a depends with the Kernel of that JNDI name. create a background thread that pings JNDI for unresolved JNDI names. When it pops up install a JNDI bean, when it disappears uninstall it.
Advantages:
a) Works with any JNDI dependency
b) minimal changes
Disadvantages:
a) Every EJB3 SFSB lookup creates a session :). We're covered locally because dependency layer should create a real hard dependency for @EJB. But remote?
b) requires a background thread that could slow deployment.
I like #2 the best combined with #3. #3 would be there to soley handle remote JNDI dependencies. The reason I want #2 is that it doesn't require changes to everything. #1 is really bad as the user may encounter an error and will not know about the extra metadata they need to provide. #2 may also be useful for other things beyond kernel dependencies.
Thoughts?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4081904#4081904
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4081904
17 years, 1 month
[Deployers on JBoss (Deployers/JBoss)] - Deployer order solely based on inputs/outputs now?
by bill.burke@jboss.com
Is deployer order solely based on inputs/outputs now? If so I believe I have a serious problem. I don't think the current approach in the EJB3 container of creating DependencyItems and RegistryPlugins is going to work. The main reason is that the @EJB annotation (and ejb-ref XML metadata) is incomplete. It does not have enough information to correctly define the dependency.
This is why there were two deployers: EJBRegistrationDeployer and EJBStage2Deployer. Registration was supposed to work first on all deployments before Stage2. Stage2 would be able to determine the "REAL" dependencies by searching for @EJB refs (and @PersistenceUnit refs for that matter) based on:
1. Look in the jar first for the reference
2. Look in the EAR
3. Look globally
EE6 will complicate things further as EJB jars will be deployable within WARs.
Do you see the problem I'm getting at? Since @EJB is incomplete, it could be possible for it to resolve to something it is not supposed to. Some links to WIKI or forum posts would be helpful. (and no adrian, google doesn't always work as you have to know what to search for).
thanks
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4081875#4081875
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4081875
17 years, 1 month
[Design of JBoss jBPM] - Re: BPEL deployment
by alex.guizar@jboss.com
I submitted before previewing... here is the intended post.
BPEL-275 is about deploying a WAR file to the server in a portable manner.
The user must provide the following artifacts:
A. The BPEL process
B. WSDL interfaces: define the messages, port types, partner link types, properties and property aliases referenced in A.
C. XML schemas: define the elements and types referenced in A and B.
The following artifacts are eligible for automatic generation. The user may still want to provide them for finer control of the resulting J2EE port components.
D. WSDL endpoints: define the bindings, services and ports for the port types in B.
E. bpel-application.xml: specifies the association between partner links in A and the services and ports in D.
H. jaxrpc-mapping.xml: maps the bindings in D and the port types in B to service endpoint interfaces, plus the elements and types in C to to Java value classes.
F. web.xml: lists the service implementation beans to be published as servlets.
G. webservices.xml: links the ports in D to the servlets in F and the service endpoint interfaces in H.
In the former model A-C were packaged in a process archive on the client and deployed to the jBPM database on the server. E-G were provided by the user. D and H were generated on the client. B-G were packaged in a WAR on the client and deployed to the server.
The new model is yet to be defined. Now that E-G can be generated, how to provide custom artifacts becomes an issue. I have two approaches in mind:
The client packages A, B and C and any overrides for E-G in a process archive and submits it to the server. The server generates any missing artifacts, builds the WAR and deploys it internally. Upon restart, the server is able to rebuild the WAR because the overrides are stored with the process definition.
The client packages A, B and C in a process archive and submits it to the server. The client generates any missing artifacts, builds the WAR and deploys it to the server. Upon server restart, the server is not able to rebuild the WAR, hence it must not be deleted.
My current preference is 1, although I have not figured out the file system access issues on the server.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4081867#4081867
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4081867
17 years, 1 month
[Design of JBoss jBPM] - Re: BPEL deployment
by alex.guizar@jboss.com
BPEL-275 is about deploying a WAR file to the server in a portable manner.
The user must provide the following artifacts:
A. The BPEL process
B. WSDL definitions containing the messages, port types, partner link types, properties and property aliases referenced in A.
C. XML schemas containing the elements and types referenced in A and B.
The following artifacts are eligible for automatic generation. The user may still want to provide them for finer control of the resulting J2EE port components.
D. WSDL definitions containing the bindings, services and ports for the port types in B.
E. The descriptor bpel-application.xml that specifies the association between partner links in A and the services and ports in D.
H. The descriptor jaxrpc-mapping.xml that maps the bindings in D and the port types in B to service endpoint interfaces, plus the elements and types in C to to Java value classes.
F. The descriptor web.xml that lists the service implementation beans to be published as servlets.
G. The descriptor webservices.xml that links the ports in D to the servlets in F and the service endpoint interfaces in H.
In the former model A-C were packaged in a process archive on the client and deployed to the jBPM database on the server. E-G were provided by the user. D and H were generated on the client. B-G were packaged in a WAR on the client and deployed to the server.
The new model is yet to be defined. Now that E-G can be generated, how to provide custom artifacts becomes an issue. I have two approaches in mind:
1. The client packages A, B and C and any overrides for E-G in a process archive and submits it to the server. The server generates any missing artifacts, builds the WAR and deploys it internally. Upon restart, the server is able to rebuild the WAR because the overrides are stored with the process definition.
2. The client packages A, B and C in a process archive and submits it to the server. The client generates any missing artifacts, builds the WAR and deploys it to the server. Upon server restart, the server is not able to rebuild the WAR, hence it must not be deleted.
My current preference is 1, although I have not figured out the file system access issues on the server.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4081864#4081864
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4081864
17 years, 1 month