Bug1:
The ejbdoclet generates invalid ejb-jar.xml files if you have:
* @ejb:ejb-external-ref ejb-name="PendingEJB" type="Entity"
home="com.fds.fc.order.pending.PendingHome"
remote="com.fds.fc.order.pending.Pending"
*
* @ejb:ejb-ref ejb-name="fc/MiniSegment" view-type="local"
The problem is that the ejb-body.j file loops over all ejb-refs first,
then ejb-external-refs. If you have a ejb-ref view-type="local" and a
ejb-external-ref that's remote, the result is that the ejb-jar.xml file
has ejb-local-refs before ejb-refs, which is invalid per the ejb20 DTD:
<!ELEMENT entity (description?, display-name?, small-icon?,
large-icon?, ejb-name, home?, remote?, local-home?, local?, ejb-class,
persistence-type, prim-key-class, reentrant, cmp-version?,
abstract-schema-name?, cmp-field*, primkey-field?,
env-entry*, ejb-ref*, ejb-local-ref*,
security-role-ref*, security-identity?, resource-ref*,
resource-env-ref*, query*)>
Bug2:
Typo in vendor/weblogic-ejb-jar-xml.j.
Proposed patches (that work for me) are attached:
? xdoclet/ejb/ejb-body.j-grk
? xdoclet/ejb/ejb-body.j-cvs
Index: xdoclet/ejb/ejb-body.j
===================================================================
RCS file: /cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/ejb-body.j,v
retrieving revision 1.27
diff -c -r1.27 ejb-body.j
*** xdoclet/ejb/ejb-body.j 2001/10/26 11:03:45 1.27
--- xdoclet/ejb/ejb-body.j 2001/10/31 17:06:03
***************
*** 148,162 ****
<ejb-link><XDtClass:classTagValue tagName="ejb:ejb-ref"
paramName="ejb-name"/></ejb-link>
</ejb-ref>
</XDtClass:ifClassTagValueEquals>
- <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-ref" paramName="view-type"
value="local">
- <ejb-local-ref>
- <ejb-ref-name><XDtClass:ifHasClassTag tagName="ejb:ejb-ref"
paramName="ref-name">ejb/<XDtClass:classTagValue tagName="ejb:ejb-ref"
paramName="ref-name"/></XDtClass:ifHasClassTag><XDtClass:ifDoesntHaveClassTag
tagName="ejb:ejb-ref" paramName="ref-name">ejb/<XDtClass:classTagValue
tagName="ejb:ejb-ref"
paramName="ejb-name"/></XDtClass:ifDoesntHaveClassTag></ejb-ref-name>
- <ejb-ref-type><XDtEjb:beanType/></ejb-ref-type>
- <local-home><XDtEjbHome:homeInterface type="local"/></local-home>
- <local><XDtEjbIntf:componentInterface type="local"/></local>
- <ejb-link><XDtClass:classTagValue tagName="ejb:ejb-ref"
paramName="ejb-name"/></ejb-link>
- </ejb-local-ref>
- </XDtClass:ifClassTagValueEquals>
</XDtClass:ifHasClassTag>
<XDtClass:ifDoesntHaveClassTag tagName="ejb:ejb-ref" paramName="view-type">
<ejb-ref>
--- 148,153 ----
***************
*** 168,173 ****
--- 159,165 ----
</ejb-ref>
</XDtClass:ifDoesntHaveClassTag>
</XDtEjbRef:forAllEjbRefs>
+
<XDtClass:forAllClassTags tagName="ejb:ejb-external-ref">
<XDtClass:ifHasClassTag tagName="ejb:ejb-external-ref" paramName="view-type">
<XDtClass:ifClassTagValueEquals tagName="ejb:ejb-external-ref"
paramName="view-type" value="remote">
***************
*** 178,191 ****
<remote><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
paramName="remote"/></remote>
</ejb-ref>
</XDtClass:ifClassTagValueEquals>
- <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-external-ref"
paramName="view-type" value="local">
- <ejb-local-ref>
- <ejb-ref-name>ejb/<XDtClass:classTagValue tagName="ejb:ejb-external-ref"
paramName="ejb-name"/></ejb-ref-name>
- <ejb-ref-type><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
paramName="type" values="Entity,Session"/></ejb-ref-type>
- <local-home><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
paramName="home"/></local-home>
- <local><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
paramName="remote"/></local>
- </ejb-local-ref>
- </XDtClass:ifClassTagValueEquals>
</XDtClass:ifHasClassTag>
<XDtClass:ifDoesntHaveClassTag tagName="ejb:ejb-external-ref"
paramName="view-type">
<ejb-ref>
--- 170,175 ----
***************
*** 195,200 ****
--- 179,211 ----
<remote><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
paramName="remote"/></remote>
</ejb-ref>
</XDtClass:ifDoesntHaveClassTag>
+ </XDtClass:forAllClassTags>
+
+ <XDtEjbRef:forAllEjbRefs>
+ <XDtClass:ifHasClassTag tagName="ejb:ejb-ref" paramName="view-type">
+ <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-ref" paramName="view-type"
+value="local">
+ <ejb-local-ref>
+ <ejb-ref-name><XDtClass:ifHasClassTag tagName="ejb:ejb-ref"
+paramName="ref-name">ejb/<XDtClass:classTagValue tagName="ejb:ejb-ref"
+paramName="ref-name"/></XDtClass:ifHasClassTag><XDtClass:ifDoesntHaveClassTag
+tagName="ejb:ejb-ref" paramName="ref-name">ejb/<XDtClass:classTagValue
+tagName="ejb:ejb-ref"
+paramName="ejb-name"/></XDtClass:ifDoesntHaveClassTag></ejb-ref-name>
+ <ejb-ref-type><XDtEjb:beanType/></ejb-ref-type>
+ <local-home><XDtEjbHome:homeInterface type="local"/></local-home>
+ <local><XDtEjbIntf:componentInterface type="local"/></local>
+ <ejb-link><XDtClass:classTagValue tagName="ejb:ejb-ref"
+paramName="ejb-name"/></ejb-link>
+ </ejb-local-ref>
+ </XDtClass:ifClassTagValueEquals>
+ </XDtClass:ifHasClassTag>
+ </XDtEjbRef:forAllEjbRefs>
+
+ <XDtClass:forAllClassTags tagName="ejb:ejb-external-ref">
+ <XDtClass:ifHasClassTag tagName="ejb:ejb-external-ref" paramName="view-type">
+ <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-external-ref"
+paramName="view-type" value="local">
+ <ejb-local-ref>
+ <ejb-ref-name>ejb/<XDtClass:classTagValue tagName="ejb:ejb-external-ref"
+paramName="ejb-name"/></ejb-ref-name>
+ <ejb-ref-type><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
+paramName="type" values="Entity,Session"/></ejb-ref-type>
+ <local-home><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
+paramName="home"/></local-home>
+ <local><XDtClass:classTagValue tagName="ejb:ejb-external-ref"
+paramName="remote"/></local>
+ </ejb-local-ref>
+ </XDtClass:ifClassTagValueEquals>
+ </XDtClass:ifHasClassTag>
</XDtClass:forAllClassTags>
</XDtMerge:merge>
Index: xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j
===================================================================
RCS file:
/cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j,v
retrieving revision 1.12
diff -c -r1.12 weblogic-ejb-jar-xml.j
*** xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j 2001/10/26 11:03:46 1.12
--- xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j 2001/10/31 17:06:03
***************
*** 220,226 ****
<XDtClass:forAllClassTags tagName="weblogic:ejb-local-reference-description">
<ejb-local-reference-description>
<ejb-ref-name><XDtClass:classTagValue
tagName="weblogic:ejb-local-reference-description"
paramName="ejb-ref-name"/></ejb-ref-name>
! <jndi-name><XDtClass:classTagValue
tagName="weblogic:ejb-reference-description" paramName="jndi-name"/></jndi-name>
</ejb-local-reference-description>
</XDtClass:forAllClassTags>
</XDtConfig:ifConfigParamGreaterOrEquals>
--- 220,226 ----
<XDtClass:forAllClassTags tagName="weblogic:ejb-local-reference-description">
<ejb-local-reference-description>
<ejb-ref-name><XDtClass:classTagValue
tagName="weblogic:ejb-local-reference-description"
paramName="ejb-ref-name"/></ejb-ref-name>
! <jndi-name><XDtClass:classTagValue
tagName="weblogic:ejb-local-reference-description" paramName="jndi-name"/></jndi-name>
</ejb-local-reference-description>
</XDtClass:forAllClassTags>
</XDtConfig:ifConfigParamGreaterOrEquals>