On Mar 9, 2006, at 2:53 AM, Conrad O'Dea wrote:
Hi David,
On Wed, 2006-02-22 at 13:11 -0600, David Jencks wrote:
[snip]
There's a missing feature at the moment that the web service builder
(axis or celtix) does not get to add to the default parents. In the
1.1/configid branch we are greatly modifying how the default parents
are set up and I plan to look at this problem with web service
builders after we get 1.1 out. Meanwhile you will need to change the
default parentids in the jetty, tomcat, and openejb builders.
Updating the parentIds did the trick here. Now I have a gbean that
I can
deploy to Geronimo and have it handle deployments of POJOs. This
leads
me on to two questions.
Is is possible to update the parentIds for these modules through the
config.xml? Right now, to get my Celtix deployer to work I need to
build my own config for G. It would be great if this could be done by
some quick edits to a config.xml in a binary distribution of G.
You can set the defaultParentId for the existing jetty/tomcat/openejb
builders in config.xml, you just use a comma-delimited list of
configids like this:
<configuration name="geronimo/jetty-deployer/${geronimo_version}/
car">
<gbean name="JettyWebBuilder">
<attribute name="defaultParentId">geronimo/jetty/$
{geronimo_version}/car,geronimo/j2ee-server/${geronimo_version}/
car,geronimo-cts/server-security/${pom.currentVersion}/car</attribute>
</gbean>
</configuration>
(you probably need to resolve the ${...} to actual versions )
The other question is related to a problem I am seeing after the WS
POJO
has been deployed and a CeltixWebServiceContainer is constructed.
When
the JettyPOJOWebServiceHolder receives the container, a
ClassCastException is thrown. This is occurring because the
WebServiceContainer interface implemented by my container has been
loaded through a different class-loader to that used by the Jetty
module
(I'm just working with Jetty and POJOs for the minute).
The JettyPOJOWebServiceHolder used this classloader to load the
interface:
[org.apache.geronimo.kernel.config.MultiParentClassLoader
id=geronimo/rmi-naming/1.2-SNAPSHOT/car]
whereas the celtix gbean loaded the interface through this loader:
[org.apache.geronimo.kernel.config.MultiParentClassLoader
id=geronimo/celtix-deployer/1.2/car]
How do I get the celtix GBean to see the same version
WebServiceContainer as the Jetty and the rest of the of the service.
The deployment plan for my GBean is attached for reference. I noticed
that the Jetty Gbean has a commented-out parentId reference to
rmi-naming but does not currently have a parent config.
Actually it does :-) In an effort to reduce duplication most of the
classloader information for a configuration is derived from the
project.xml for that module. In particular the jetty module has two
parents:
<!-- parent config -->
<dependency>
<groupId>geronimo</groupId>
<artifactId>rmi-naming</artifactId>
<version>${geronimo_version}</version>
<type>car</type>
<properties>
<geronimo.import>true</geronimo.import>
</properties>
</dependency>
<dependency>
<groupId>geronimo</groupId>
<artifactId>geronimo-jetty</artifactId>
<version>${geronimo_version}</version>
<properties>
<geronimo.dependency>true</geronimo.dependency>
</properties>
</dependency>
The packaging plugin modifies the plan to include these. If you look
at the plan in the target directory of a config you will see the
final plan that is actually used.
If you are using the packaging plugin to build your config you can
use this technique, otherwise you need to include the parents as
imports directly in your plan. In either case including the rmi-
naming config as an import should solve the duplicate classloader
problem.
thanks
david jencks
thanks again,
Conrad
<plan.xml>