hi,
here we go, another patch from your buddy fawce (2nd
lifetime). there were two bugs in the jboss_net.xdt
resource file, first it did not properly handle ejb's with a
view-type of "both", and secondly, did not put the fully
qualified classname in the homeInterfaceName. This
patch fixes both.
thanks,
fawce
RCS
file: /usr/local/cvsroot//tamale_jboss4/jboss.net/src/resou
rces/xdoclet/modules/jboss/net/resources/jboss-
net_xml.xdt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
---
tamale_jboss4/jboss.net/src/resources/xdoclet/modules/j
boss/net/resources/jboss-net_xml.xdt 2002/10/07
06:33:28 1.1
+++
tamale_jboss4/jboss.net/src/resources/xdoclet/modules/j
boss/net/resources/jboss-net_xml.xdt 2002/12/14
00:33:31 1.2
@@ -1,9 +1,9 @@
<?xml version="1.0"
encoding="<XDtConfig:configParameterValue
paramName='XmlEncoding'/>"?>
-<!-- -->
-<!-- This JBoss.Net Web Service Descriptor has been
generated by XDoclet -->
-<!-- and brought to you by F. M. Brier, C. G. Jung and
J. Essington -->
-<!-- -->
+<!--
-->
+<!-- This JBoss.Net Web Service Descriptor has been
generated by XDoclet -->
+<!-- and brought to you by F. M. Brier, C. G. Jung and
J. Essington -->
+<!--
-->
<deployment
name="<XDtConfig:configParameterValue
paramName='WebDeploymentName'/>"
@@ -27,7 +27,21 @@
</XDtClass:ifClassTagValueEquals>
</XDtClass:ifDoesntHaveClassTag>
<parameter name="handlerClass"
value="org.jboss.net.axis.server.EJBProvider"/>
- <parameter name="beanJndiName"
value="<XDtEjb:ifRemoteEjb><XDtEjbHome:jndiName
type="remote"/></XDtEjb:ifRemoteEjb><XDtEjb:ifLocalEj
b><XDtEjbHome:jndiName
type="local"/></XDtEjb:ifLocalEjb>"/>
+ <XDtEjb:ifNotLocalEjb>
+ <XDtEjb:ifRemoteEjb>
+ <parameter
name="beanJndiName" value="<XDtEjbHome:jndiName
type="remote"/>" />
+ <parameter
name="homeInterfaceName"
value="<XDtEjbHome:homeInterface type="remote"/>" />
+ </XDtEjb:ifRemoteEjb>
+ <!--If this bean is neither remote
nor local, it is a both, and we can use Local-->
+ <XDtEjb:ifNotRemoteEjb>
+ <parameter
name="beanJndiName" value="<XDtEjbHome:jndiName
type="local"/>"/>
+ <parameter
name="homeInterfaceName"
value="<XDtEjbHome:homeInterface type="local"/>" />
+ </XDtEjb:ifNotRemoteEjb>
+ </XDtEjb:ifNotLocalEjb>
+ <XDtEjb:ifLocalEjb>
+ <parameter
name="beanJndiName" value="<XDtEjbHome:jndiName
type="local"/>"/>
+ <parameter
name="homeInterfaceName"
value="<XDtEjbHome:homeInterface type="local"/>" />
+ </XDtEjb:ifLocalEjb>
<parameter name="allowedMethods"
value="<XDtClass:ifHasClassTag tagName="jboss-
net:web-service" paramName="expose-
all">*</XDtClass:ifHasClassTag><XDtClass:ifDoesntHav
eClassTag tagName="jboss-net:web-service"
paramName="expose-
all"><XDtMethod:forAllMethods><XDtEjbIntf:ifIsInterface
Method><XDtMethod:ifHasMethodTag tagName="jboss-
net:web-method"><XDtEjbIntf:interfaceMethodName/>
</XDtMethod:ifHasMethodTag></XDtEjbIntf:ifIsInterfaceM
ethod></XDtMethod:forAllMethods></XDtClass:ifDoesnt
HaveClassTag>"/>
<requestFlow name="<XDtClass:classTagValue
tagName='jboss-net:web-service'
paramName='urn'/>Request">
@@ -47,11 +61,11 @@
</XDtClass:ifHasClassTag>
</handler>
</XDtClass:ifHasClassTag>
- <handler
type="java:org.jboss.net.axis.server.TransactionRequest
Handler"/>
+ <handler name="TransactionRequestHandler"
type="java:org.jboss.net.axis.server.TransactionRequest
Handler"/>
</requestFlow>
<responseFlow name="<XDtClass:classTagValue
tagName='jboss-net:web-service'
paramName='urn'/>Response">
- <handler
type="java:org.jboss.net.axis.server.SerialisationRespon
seHandler"/>
- <handler
type="java:org.jboss.net.axis.server.TransactionRespons
eHandler"/>
+ <handler name="SerialisationResponseHandler"
type="java:org.jboss.net.axis.server.SerialisationRespon
seHandler"/>
+ <handler name="TransactionResponseHandler"
type="java:org.jboss.net.axis.server.TransactionRespons
eHandler"/>
</responseFlow>
</service>
</XDtClass:ifHasClassTag>
Logged In: YES
user_id=175199
local/home thingy is right.
about the name qualification, I have to recheck (could be that
it is not needed at all due to EJBProvider using reflection
instead of forName() resolution.
Logged In: YES
user_id=175199
I checked your diff now just via the web, but still, it puzzles
me.
a) from the xdoclet-ejb behaviour, a view-type of both should
make both the ifRemoteEjb and the ifLocalEjb tags true,
hence the remote one is preferred and taken. There is no
ifBothEjb to my knowledge, hence this should work in any
case, maybe we could add a jboss-net tag that chooses the
right interface in that case?
b) the parameter homeInterfaceName is new (or old) to me.
interface. Has this been introduced lately or was this a relict
from a previous axis/jboss-net version? Since EJBProvider
uses the jndiName to lookup and reflect the beans home
anyway, you do not need to specify the classname. At least
in head, I could not find it anymore.
Logged In: YES
user_id=175199
thx finally. I found the flaw. We now use as much local as
possible, only if not local, we use the more expensive remote
versions.