The ejb-name in the assembly-descriptor has to match the ejb-name in the
bean declaration.  It doesn't.  You have "Product" in one place and
"MyProduct" in the other as the ejb-name.  That shouldn't work.


On 26 Dec 2000 23:06:15 -0600, Vivek Iyer wrote:
> 
> 
> Hi all,
> 
> I'm trying to get my understanding/control of declarative transactions in EJB up
> to speed, and I'm puzzled by the following:
> 
> Context: The Product EJB that comes with the ejb/demos with Orion.
> 
> Action: I set the value of "trans-attribute" ejb-jar.xml for the "Product" bean
> that comes with the ejb demos in orion to "Mandatory" for all methods in the
> Product bean (this is just for illustrative purposes).
> 
> Expected Result: Since the ProductClient in the ejb demos does _not_ explicitly
> start a UserTransaction, its first invocation of a method on the Product bean is
> outside of any transaction context, and so should cause a
> TransactionRequiredException to be thrown, should it not?
> 
> Actual Result: In fact, after Orion redeploys the Product bean, and the
> ProductClient runs just fine.
> 
> Can someone please tell me what I'm missing? I've included the ejb-jar.xml and
> the ProductClient code below. As an aside, if someone could point me to a good
> example system with non-trivial transactions controlled declaratively in orion,
> I'd be grateful.
> 
> Here's the ejb-jar.xml -
> <ejb-jar>
>      <description>
>      </description>
>      <enterprise-beans>
>           <entity>
>                <description>
>                </description>
>                <ejb-name>MyProduct</ejb-name>
>                <home>ProductHome</home>
>                <remote>Product</remote>
>                <ejb-class>ProductEJB</ejb-class>
>                <primkey-class>java.lang.Integer</primkey-class>
>                <reentrant>True</reentrant>
>                <persistence-type>Container</persistence-type>
>                <cmp-field><field-name>id</field-name></cmp-field>
>                <cmp-field><field-name>name</field-name></cmp-field>
>                <cmp-field><field-name>description</field-name></cmp-field>
>                <cmp-field><field-name>price</field-name></cmp-field>
>                <primkey-field>id</primkey-field>
>           </entity>
>      </enterprise-beans>
>      <assembly-descriptor>
>           <container-transaction>
>                <method>
>                     <ejb-name>Product</ejb-name>
>                     <method-name>*</method-name>
>                </method>
>                <trans-attribute>Mandatory</trans-attribute>
>           </container-transaction>
>      </assembly-descriptor>
> </ejb-jar>
> 
> And here's the relevant code on the ProductClient -
> 
> // Create a new Product and narrow the reference.
> Product product = (Product)PortableRemoteObject.narrow(home.create(id),
> Product.class);
> product.setName(name);
> product.setPrice(cost);
> 
> Thanks,
> 
> Vivek

-- 
Scott Stirling
West Newton, MA


Reply via email to