[
http://jira.jboss.com/jira/browse/JBSEAM-2143?page=comments#action_12412797 ]
Dan Allen commented on JBSEAM-2143:
-----------------------------------
I want to clarify that there is a distinction between "configuring" and
"defining" a component. It *is* possible to configure (the properties of) a hot
deployable component in components.xml. You just cannot define a component this way. As
Pete was saying, if we did allow components to be defined in components.xml, it would need
to be a separate components.xml that resides on the hot deployable classpath (not a bad
idea actually).
If you have a hot deployable component defined as follows:
@Name("myComponent")
public class MyComponent {
private String propA;
// getters and setters as needed
}
You can configure the initial value of the property named propA in components.xml using
the following declaration:
<component name="myComponent">
<property name="propA">initial value</property>
</component>
What you cannot do is the following:
<component name="myComponent" class="MyComponent">
<property name="propA">initial value</property>
</component>
The second XML stanza is a component definition (it has both name and class) and Seam
cannot *see* into the hot deployment classloader in order to fulfill it.
Detailed coverage of this topic can be found in chapters 4 and 5 of Seam in Action.
Hotdeployed components can't be configured through
components.xml
-----------------------------------------------------------------
Key: JBSEAM-2143
URL:
http://jira.jboss.com/jira/browse/JBSEAM-2143
Project: Seam
Issue Type: Feature Request
Components: Hot Deploy
Affects Versions: 2.0.0.CR2
Reporter: Pete Muir
Priority: Critical
Fix For: 2.1.0.GA
he hot deployment scanner is isolated, using a URLClassloader that is not available once
that method comes to a close. The only way to make this work would be to keep that
classloader alive during the rest of the startup process. I can direct you to the line of
code that you need to look at if you are curious about it.
Check out lines 540 and 541 or org.jboss.seam.init.Initialiation. The
scanForHotDeployableComponents uses the following logic to create a component scanner:
URL[] urls = { url };
classLoader = new URLClassLoader(urls,
Thread.currentThread().getContextClassLoader());
paths = new File[] { directory };
Once it processes the classes, that classloader is discarded and obviously, since it is a
URLclassloader, the classes aren't going to be found later on.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira