You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by David Blevins <da...@visi.com> on 2008/05/26 00:31:37 UTC

Re: svn commit: r659997 - in /incubator/tuscany/java/sca/modules: ./ host-ejb/ host-ejb/src/ host-ejb/src/main/ host-ejb/src/main/java/ host-ejb/src/main/java/org/ host-ejb/src/main/java/org/apache/ host-ejb/src/main/java/org/apache/tuscany/ host-ejb/src/m...

This looks really cool.

If you guys want any special features, definitely let us know.  We've  
got a 3.0.1 coming down the pipe soon-ish.

Don't know much of anything about the Tuscany architecture, but  
noticing you've got a module called host-http.  We have some code in  
openejb-http that can support EJB invocations over HTTP which you may  
like.  Might be nice if you don't want to have special ports open just  
for ejb, could do it all over the existing http setup.

You just need a servlet like this one:
https://svn.apache.org/repos/asf/openejb/tags/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/ServerServlet.java

Been thinking to move that into the openejb-http module for a while,  
seems like a good reason to finally do it.

-David


On May 25, 2008, at 9:34 AM, jsdelfino@apache.org wrote:

> Author: jsdelfino
> Date: Sun May 25 09:34:16 2008
> New Revision: 659997
>
> URL: http://svn.apache.org/viewvc?rev=659997&view=rev
> Log:
> Work in progress, starting to implement a Tuscany host module for  
> EJB session beans, using OpenEJB.
>
> Added:
>    incubator/tuscany/java/sca/modules/host-ejb/
>    incubator/tuscany/java/sca/modules/host-ejb/DISCLAIMER
>    incubator/tuscany/java/sca/modules/host-ejb/LICENSE
>    incubator/tuscany/java/sca/modules/host-ejb/NOTICE
>    incubator/tuscany/java/sca/modules/host-ejb/pom.xml
>    incubator/tuscany/java/sca/modules/host-ejb/src/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/DefaultEJBHostExtensionPoint.java
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHost.java
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHostExtensionPoint.java
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBRegistrationException.java
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBSessionBean.java
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/ExtensibleEJBHost.java
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/ 
> META-INF/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/ 
> META-INF/services/
>    incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/ 
> META-INF/services/ 
> org.apache.tuscany.sca.host.http.ServletHostExtensionPoint
>    incubator/tuscany/java/sca/modules/host-openejb/
>    incubator/tuscany/java/sca/modules/host-openejb/DISCLAIMER
>    incubator/tuscany/java/sca/modules/host-openejb/LICENSE
>    incubator/tuscany/java/sca/modules/host-openejb/NOTICE
>    incubator/tuscany/java/sca/modules/host-openejb/pom.xml
>    incubator/tuscany/java/sca/modules/host-openejb/src/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/tuscany/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/tuscany/sca/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/tuscany/sca/host/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/tuscany/sca/host/openejb/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/tuscany/sca/host/openejb/OpenEJBRuntimeModuleActivator.java
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/ 
> apache/tuscany/sca/host/openejb/OpenEJBServer.java
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/resources/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/ 
> resources/META-INF/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/ 
> resources/META-INF/services/
>    incubator/tuscany/java/sca/modules/host-openejb/src/main/ 
> resources/META-INF/services/ 
> org.apache.tuscany.sca.core.ModuleActivator
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/ 
> apache/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/ 
> apache/tuscany/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/ 
> apache/tuscany/sca/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/ 
> apache/tuscany/sca/host/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/ 
> apache/tuscany/sca/host/openejb/
>    incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/ 
> apache/tuscany/sca/host/openejb/OpenEJBServerTestCase.java
> Modified:
>    incubator/tuscany/java/sca/modules/pom.xml
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/DISCLAIMER
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/DISCLAIMER?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/DISCLAIMER (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/DISCLAIMER Sun May  
> 25 09:34:16 2008
> @@ -0,0 +1,8 @@
> +Apache Tuscany is an effort undergoing incubation at The Apache  
> Software
> +Foundation (ASF), sponsored by the Apache Web Services PMC.  
> Incubation is
> +required of all newly accepted projects until a further review  
> indicates that
> +the infrastructure, communications, and decision making process  
> have stabilized
> +in a manner consistent with other successful ASF projects. While  
> incubation
> +status is not necessarily a reflection of the completeness or  
> stability of the
> +code, it does indicate that the project has yet to be fully  
> endorsed by the ASF.
> +
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/LICENSE
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/LICENSE?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/LICENSE (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/LICENSE Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,205 @@
> +
> +                                 Apache License
> +                           Version 2.0, January 2004
> +                        http://www.apache.org/licenses/
> +
> +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
> +
> +   1. Definitions.
> +
> +      "License" shall mean the terms and conditions for use,  
> reproduction,
> +      and distribution as defined by Sections 1 through 9 of this  
> document.
> +
> +      "Licensor" shall mean the copyright owner or entity  
> authorized by
> +      the copyright owner that is granting the License.
> +
> +      "Legal Entity" shall mean the union of the acting entity and  
> all
> +      other entities that control, are controlled by, or are under  
> common
> +      control with that entity. For the purposes of this definition,
> +      "control" means (i) the power, direct or indirect, to cause the
> +      direction or management of such entity, whether by contract or
> +      otherwise, or (ii) ownership of fifty percent (50%) or more  
> of the
> +      outstanding shares, or (iii) beneficial ownership of such  
> entity.
> +
> +      "You" (or "Your") shall mean an individual or Legal Entity
> +      exercising permissions granted by this License.
> +
> +      "Source" form shall mean the preferred form for making  
> modifications,
> +      including but not limited to software source code,  
> documentation
> +      source, and configuration files.
> +
> +      "Object" form shall mean any form resulting from mechanical
> +      transformation or translation of a Source form, including but
> +      not limited to compiled object code, generated documentation,
> +      and conversions to other media types.
> +
> +      "Work" shall mean the work of authorship, whether in Source or
> +      Object form, made available under the License, as indicated  
> by a
> +      copyright notice that is included in or attached to the work
> +      (an example is provided in the Appendix below).
> +
> +      "Derivative Works" shall mean any work, whether in Source or  
> Object
> +      form, that is based on (or derived from) the Work and for  
> which the
> +      editorial revisions, annotations, elaborations, or other  
> modifications
> +      represent, as a whole, an original work of authorship. For  
> the purposes
> +      of this License, Derivative Works shall not include works  
> that remain
> +      separable from, or merely link (or bind by name) to the  
> interfaces of,
> +      the Work and Derivative Works thereof.
> +
> +      "Contribution" shall mean any work of authorship, including
> +      the original version of the Work and any modifications or  
> additions
> +      to that Work or Derivative Works thereof, that is intentionally
> +      submitted to Licensor for inclusion in the Work by the  
> copyright owner
> +      or by an individual or Legal Entity authorized to submit on  
> behalf of
> +      the copyright owner. For the purposes of this definition,  
> "submitted"
> +      means any form of electronic, verbal, or written  
> communication sent
> +      to the Licensor or its representatives, including but not  
> limited to
> +      communication on electronic mailing lists, source code  
> control systems,
> +      and issue tracking systems that are managed by, or on behalf  
> of, the
> +      Licensor for the purpose of discussing and improving the  
> Work, but
> +      excluding communication that is conspicuously marked or  
> otherwise
> +      designated in writing by the copyright owner as "Not a  
> Contribution."
> +
> +      "Contributor" shall mean Licensor and any individual or Legal  
> Entity
> +      on behalf of whom a Contribution has been received by  
> Licensor and
> +      subsequently incorporated within the Work.
> +
> +   2. Grant of Copyright License. Subject to the terms and  
> conditions of
> +      this License, each Contributor hereby grants to You a  
> perpetual,
> +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
> +      copyright license to reproduce, prepare Derivative Works of,
> +      publicly display, publicly perform, sublicense, and  
> distribute the
> +      Work and such Derivative Works in Source or Object form.
> +
> +   3. Grant of Patent License. Subject to the terms and conditions of
> +      this License, each Contributor hereby grants to You a  
> perpetual,
> +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
> +      (except as stated in this section) patent license to make,  
> have made,
> +      use, offer to sell, sell, import, and otherwise transfer the  
> Work,
> +      where such license applies only to those patent claims  
> licensable
> +      by such Contributor that are necessarily infringed by their
> +      Contribution(s) alone or by combination of their  
> Contribution(s)
> +      with the Work to which such Contribution(s) was submitted. If  
> You
> +      institute patent litigation against any entity (including a
> +      cross-claim or counterclaim in a lawsuit) alleging that the  
> Work
> +      or a Contribution incorporated within the Work constitutes  
> direct
> +      or contributory patent infringement, then any patent licenses
> +      granted to You under this License for that Work shall terminate
> +      as of the date such litigation is filed.
> +
> +   4. Redistribution. You may reproduce and distribute copies of the
> +      Work or Derivative Works thereof in any medium, with or without
> +      modifications, and in Source or Object form, provided that You
> +      meet the following conditions:
> +
> +      (a) You must give any other recipients of the Work or
> +          Derivative Works a copy of this License; and
> +
> +      (b) You must cause any modified files to carry prominent  
> notices
> +          stating that You changed the files; and
> +
> +      (c) You must retain, in the Source form of any Derivative Works
> +          that You distribute, all copyright, patent, trademark, and
> +          attribution notices from the Source form of the Work,
> +          excluding those notices that do not pertain to any part of
> +          the Derivative Works; and
> +
> +      (d) If the Work includes a "NOTICE" text file as part of its
> +          distribution, then any Derivative Works that You  
> distribute must
> +          include a readable copy of the attribution notices  
> contained
> +          within such NOTICE file, excluding those notices that do  
> not
> +          pertain to any part of the Derivative Works, in at least  
> one
> +          of the following places: within a NOTICE text file  
> distributed
> +          as part of the Derivative Works; within the Source form or
> +          documentation, if provided along with the Derivative  
> Works; or,
> +          within a display generated by the Derivative Works, if and
> +          wherever such third-party notices normally appear. The  
> contents
> +          of the NOTICE file are for informational purposes only and
> +          do not modify the License. You may add Your own attribution
> +          notices within Derivative Works that You distribute,  
> alongside
> +          or as an addendum to the NOTICE text from the Work,  
> provided
> +          that such additional attribution notices cannot be  
> construed
> +          as modifying the License.
> +
> +      You may add Your own copyright statement to Your  
> modifications and
> +      may provide additional or different license terms and  
> conditions
> +      for use, reproduction, or distribution of Your modifications,  
> or
> +      for any such Derivative Works as a whole, provided Your use,
> +      reproduction, and distribution of the Work otherwise complies  
> with
> +      the conditions stated in this License.
> +
> +   5. Submission of Contributions. Unless You explicitly state  
> otherwise,
> +      any Contribution intentionally submitted for inclusion in the  
> Work
> +      by You to the Licensor shall be under the terms and  
> conditions of
> +      this License, without any additional terms or conditions.
> +      Notwithstanding the above, nothing herein shall supersede or  
> modify
> +      the terms of any separate license agreement you may have  
> executed
> +      with Licensor regarding such Contributions.
> +
> +   6. Trademarks. This License does not grant permission to use the  
> trade
> +      names, trademarks, service marks, or product names of the  
> Licensor,
> +      except as required for reasonable and customary use in  
> describing the
> +      origin of the Work and reproducing the content of the NOTICE  
> file.
> +
> +   7. Disclaimer of Warranty. Unless required by applicable law or
> +      agreed to in writing, Licensor provides the Work (and each
> +      Contributor provides its Contributions) on an "AS IS" BASIS,
> +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> +      implied, including, without limitation, any warranties or  
> conditions
> +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
> +      PARTICULAR PURPOSE. You are solely responsible for  
> determining the
> +      appropriateness of using or redistributing the Work and  
> assume any
> +      risks associated with Your exercise of permissions under this  
> License.
> +
> +   8. Limitation of Liability. In no event and under no legal theory,
> +      whether in tort (including negligence), contract, or otherwise,
> +      unless required by applicable law (such as deliberate and  
> grossly
> +      negligent acts) or agreed to in writing, shall any  
> Contributor be
> +      liable to You for damages, including any direct, indirect,  
> special,
> +      incidental, or consequential damages of any character arising  
> as a
> +      result of this License or out of the use or inability to use  
> the
> +      Work (including but not limited to damages for loss of  
> goodwill,
> +      work stoppage, computer failure or malfunction, or any and all
> +      other commercial damages or losses), even if such Contributor
> +      has been advised of the possibility of such damages.
> +
> +   9. Accepting Warranty or Additional Liability. While  
> redistributing
> +      the Work or Derivative Works thereof, You may choose to offer,
> +      and charge a fee for, acceptance of support, warranty,  
> indemnity,
> +      or other liability obligations and/or rights consistent with  
> this
> +      License. However, in accepting such obligations, You may act  
> only
> +      on Your own behalf and on Your sole responsibility, not on  
> behalf
> +      of any other Contributor, and only if You agree to indemnify,
> +      defend, and hold each Contributor harmless for any liability
> +      incurred by, or claims asserted against, such Contributor by  
> reason
> +      of your accepting any such warranty or additional liability.
> +
> +   END OF TERMS AND CONDITIONS
> +
> +   APPENDIX: How to apply the Apache License to your work.
> +
> +      To apply the Apache License to your work, attach the following
> +      boilerplate notice, with the fields enclosed by brackets "[]"
> +      replaced with your own identifying information. (Don't include
> +      the brackets!)  The text should be enclosed in the appropriate
> +      comment syntax for the file format. We also recommend that a
> +      file or class name and description of purpose be included on  
> the
> +      same "printed page" as the copyright notice for easier
> +      identification within third-party archives.
> +
> +   Copyright [yyyy] [name of copyright owner]
> +
> +   Licensed under the Apache License, Version 2.0 (the "License");
> +   you may not use this file except in compliance with the License.
> +   You may obtain a copy of the License at
> +
> +       http://www.apache.org/licenses/LICENSE-2.0
> +
> +   Unless required by applicable law or agreed to in writing,  
> software
> +   distributed under the License is distributed on an "AS IS" BASIS,
> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
> implied.
> +   See the License for the specific language governing permissions  
> and
> +   limitations under the License.
> +
> +
> +
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/NOTICE
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/NOTICE?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/NOTICE (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/NOTICE Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,6 @@
> +${pom.name}
> +Copyright (c) 2005 - 2008 The Apache Software Foundation
> +
> +This product includes software developed by
> +The Apache Software Foundation (http://www.apache.org/).
> +
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/pom.xml?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/pom.xml (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/pom.xml Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,57 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> +-->
> +<project>
> +    <modelVersion>4.0.0</modelVersion>
> +    <parent>
> +        <groupId>org.apache.tuscany.sca</groupId>
> +        <artifactId>tuscany-modules</artifactId>
> +        <version>2.0-incubating-SNAPSHOT</version>
> +        <relativePath>../pom.xml</relativePath>
> +    </parent>
> +    <artifactId>tuscany-host-ejb</artifactId>
> +    <name>Apache Tuscany SCA EJB Host Extension Point</name>
> +
> +    <dependencies>
> +        <dependency>
> +            <groupId>org.apache.tuscany.sca</groupId>
> +            <artifactId>tuscany-core-spi</artifactId>
> +            <version>2.0-incubating-SNAPSHOT</version>
> +        </dependency>
> +    </dependencies>
> +
> +    <build>
> +        <plugins>
> +            <plugin>
> +                <groupId>org.apache.felix</groupId>
> +                <artifactId>maven-bundle-plugin</artifactId>
> +
> +                <configuration>
> +                    <instructions>
> +                        <Bundle-Version>${tuscany.version}</Bundle- 
> Version>
> +                        <Bundle- 
> SymbolicName>org.apache.tuscany.sca.host.ejb</Bundle-SymbolicName>
> +                        <Bundle-Description>${pom.name}</Bundle- 
> Description>
> +                        <Export- 
> Package>org.apache.tuscany.sca.host.ejb*</Export-Package>
> +                    </instructions>
> +                </configuration>
> +            </plugin>
> +        </plugins>
> +    </build>
> +
> +</project>
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/DefaultEJBHostExtensionPoint.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/apache/tuscany/sca/host/ejb/DefaultEJBHostExtensionPoint.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/DefaultEJBHostExtensionPoint.java (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/DefaultEJBHostExtensionPoint.java Sun  
> May 25 09:34:16 2008
> @@ -0,0 +1,45 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.host.ejb;
> +
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +/**
> + * Default implementation of an EJB host extension point.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class DefaultEJBHostExtensionPoint implements  
> EJBHostExtensionPoint {
> +
> +    private List<EJBHost> ejbHosts = new ArrayList<EJBHost>();
> +
> +    public void addEJBHost(EJBHost servletHost) {
> +        ejbHosts.add(servletHost);
> +    }
> +
> +    public void removeEJBHost(EJBHost servletHost) {
> +        ejbHosts.remove(servletHost);
> +    }
> +
> +    public List<EJBHost> getEJBHosts() {
> +        return ejbHosts;
> +    }
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHost.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/apache/tuscany/sca/host/ejb/EJBHost.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHost.java (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHost.java Sun May 25 09:34:16 2008
> @@ -0,0 +1,62 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.tuscany.sca.host.ejb;
> +
> +
> +
> +/**
> + * Interface implemented by host environments that allow EJBs
> + * to be registered.
> + * <p/>
> + * This interface allows a system service to register an EJB session
> + * bean to handle inbound requests.
> + *
> + * @version $Rev$ $Date$
> + */
> +public interface EJBHost {
> +
> +    /**
> +     * Add an EJB session bean.
> +     *
> +     * @param ejbName the EJB name
> +     * @param sessionBean the EJB session bean descriptor
> +     * @throws EJBRegistrationException
> +     */
> +    void addSessionBean(String ejbName, EJBSessionBean sessionBean)  
> throws EJBRegistrationException;
> +
> +    /**
> +     * Remove an EJB session bean.
> +     *
> +     * @param ejbName the EJB name
> +     * @return the EJB session bean descriptor that was registered  
> under that name
> +     * @throws EJBRegistrationException
> +     */
> +    EJBSessionBean removeSessionBean(String ejbName) throws  
> EJBRegistrationException;
> +
> +    /**
> +     * Returns the EJB session bean descriptor registered under
> +     * the given EJB name.
> +     *
> +     * @param ejbName the EJB name
> +     * @return the EJB session bean descriptor
> +     * @throws EJBRegistrationException
> +     */
> +    EJBSessionBean getSessionBean(String ejbName) throws  
> EJBRegistrationException;
> +
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHostExtensionPoint.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/apache/tuscany/sca/host/ejb/EJBHostExtensionPoint.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHostExtensionPoint.java (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBHostExtensionPoint.java Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,51 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.tuscany.sca.host.ejb;
> +
> +import java.util.List;
> +
> +/**
> + * An extension point for EJB hosts.
> + *
> + * @version $Rev$ $Date$
> + */
> +public interface EJBHostExtensionPoint {
> +
> +    /**
> +     * Adds an EJB host extension.
> +     *
> +     * @param ejbHost
> +     */
> +    void addEJBHost(EJBHost ejbHost);
> +
> +    /**
> +     * Removes an EJB host extension.
> +     *
> +     * @param ejbHost
> +     */
> +    void removeEJBHost(EJBHost ejbHost);
> +
> +    /**
> +     * Returns a list of EJB host extensions.
> +     *
> +     * @return
> +     */
> +    List<EJBHost> getEJBHosts();
> +
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBRegistrationException.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/apache/tuscany/sca/host/ejb/EJBRegistrationException.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBRegistrationException.java (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBRegistrationException.java Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,44 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.tuscany.sca.host.ejb;
> +
> +/**
> + * Indicates an exception while registering an EJB.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class EJBRegistrationException extends RuntimeException {
> +    private static final long serialVersionUID = 1L;
> +
> +    public EJBRegistrationException() {
> +        super();
> +    }
> +
> +    public EJBRegistrationException(String message) {
> +        super(message);
> +    }
> +
> +    public EJBRegistrationException(String message, Throwable  
> cause) {
> +        super(message, cause);
> +    }
> +
> +    public EJBRegistrationException(Throwable cause) {
> +        super(cause);
> +    }
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBSessionBean.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/apache/tuscany/sca/host/ejb/EJBSessionBean.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBSessionBean.java (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/EJBSessionBean.java Sun May 25 09:34:16  
> 2008
> @@ -0,0 +1,45 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.host.ejb;
> +
> +/**
> + * EJBSessionBean
> + *
> + * @version $Rev: $ $Date: $
> + */
> +public class EJBSessionBean {
> +
> +    private Class<?> implementationClass;
> +    private Class<?> remoteInterface;
> +
> +    public EJBSessionBean(Class<?> implementationClass, Class<?>  
> remoteInterface) {
> +        this.implementationClass = implementationClass;
> +        this.remoteInterface = remoteInterface;
> +    }
> +
> +    public Class<?> getImplementationClass() {
> +        return implementationClass;
> +    }
> +
> +    public Class<?> getRemoteInterface() {
> +        return remoteInterface;
> +    }
> +
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/ExtensibleEJBHost.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/apache/tuscany/sca/host/ejb/ExtensibleEJBHost.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/ExtensibleEJBHost.java (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/java/org/ 
> apache/tuscany/sca/host/ejb/ExtensibleEJBHost.java Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,69 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.host.ejb;
> +
> +
> +/**
> + * Default implementation of an extensible EJB host.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class ExtensibleEJBHost implements EJBHost {
> +
> +    private EJBHostExtensionPoint ejbHosts;
> +
> +    public ExtensibleEJBHost(EJBHostExtensionPoint ejbHosts) {
> +        this.ejbHosts = ejbHosts;
> +    }
> +
> +    public void addSessionBean(String ejbName, EJBSessionBean  
> ejbClass) throws EJBRegistrationException {
> +        if (ejbHosts.getEJBHosts().isEmpty()) {
> +            throw new EJBRegistrationException("No EJB host  
> available");
> +        }
> +
> +        // TODO implement selection of the correct EJB host based  
> on the mapping
> +        // For now just select the first one
> +        getDefaultEJBHost().addSessionBean(ejbName, ejbClass);
> +    }
> +
> +    public EJBSessionBean removeSessionBean(String ejbName) throws  
> EJBRegistrationException {
> +        if (ejbHosts.getEJBHosts().isEmpty()) {
> +            throw new EJBRegistrationException("No EJB host  
> available");
> +        }
> +
> +        // TODO implement selection of the correct EJB host based  
> on the mapping
> +        // For now just select the first one
> +        return getDefaultEJBHost().removeSessionBean(ejbName);
> +    }
> +
> +    public EJBSessionBean getSessionBean(String ejbName) throws  
> EJBRegistrationException {
> +        if (ejbHosts.getEJBHosts().isEmpty()) {
> +            throw new EJBRegistrationException("No EJB host  
> available");
> +        }
> +
> +        // TODO implement selection of the correct EJB host based  
> on the mapping
> +        // For now just select the first one
> +        return getDefaultEJBHost().getSessionBean(ejbName);
> +    }
> +
> +    private EJBHost getDefaultEJBHost() {
> +        return ejbHosts.getEJBHosts().get(0);
> +    }
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-ejb/src/main/ 
> resources/META-INF/services/ 
> org.apache.tuscany.sca.host.http.ServletHostExtensionPoint
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/META-INF/services/org.apache.tuscany.sca.host.http.ServletHostExtensionPoint?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/ 
> META-INF/services/ 
> org.apache.tuscany.sca.host.http.ServletHostExtensionPoint (added)
> +++ incubator/tuscany/java/sca/modules/host-ejb/src/main/resources/ 
> META-INF/services/ 
> org.apache.tuscany.sca.host.http.ServletHostExtensionPoint Sun May  
> 25 09:34:16 2008
> @@ -0,0 +1,18 @@
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership.  The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License.  You may obtain a copy of the License at
> +#
> +#   http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing,
> +# software distributed under the License is distributed on an
> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +# KIND, either express or implied.  See the License for the
> +# specific language governing permissions and limitations
> +# under the License.
> +
> +org.apache.tuscany.sca.host.http.DefaultServletHostExtensionPoint
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/DISCLAIMER
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/DISCLAIMER?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/DISCLAIMER (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/DISCLAIMER Sun  
> May 25 09:34:16 2008
> @@ -0,0 +1,8 @@
> +Apache Tuscany is an effort undergoing incubation at The Apache  
> Software
> +Foundation (ASF), sponsored by the Apache Web Services PMC.  
> Incubation is
> +required of all newly accepted projects until a further review  
> indicates that
> +the infrastructure, communications, and decision making process  
> have stabilized
> +in a manner consistent with other successful ASF projects. While  
> incubation
> +status is not necessarily a reflection of the completeness or  
> stability of the
> +code, it does indicate that the project has yet to be fully  
> endorsed by the ASF.
> +
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/LICENSE
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/LICENSE?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/LICENSE (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/LICENSE Sun May  
> 25 09:34:16 2008
> @@ -0,0 +1,205 @@
> +
> +                                 Apache License
> +                           Version 2.0, January 2004
> +                        http://www.apache.org/licenses/
> +
> +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
> +
> +   1. Definitions.
> +
> +      "License" shall mean the terms and conditions for use,  
> reproduction,
> +      and distribution as defined by Sections 1 through 9 of this  
> document.
> +
> +      "Licensor" shall mean the copyright owner or entity  
> authorized by
> +      the copyright owner that is granting the License.
> +
> +      "Legal Entity" shall mean the union of the acting entity and  
> all
> +      other entities that control, are controlled by, or are under  
> common
> +      control with that entity. For the purposes of this definition,
> +      "control" means (i) the power, direct or indirect, to cause the
> +      direction or management of such entity, whether by contract or
> +      otherwise, or (ii) ownership of fifty percent (50%) or more  
> of the
> +      outstanding shares, or (iii) beneficial ownership of such  
> entity.
> +
> +      "You" (or "Your") shall mean an individual or Legal Entity
> +      exercising permissions granted by this License.
> +
> +      "Source" form shall mean the preferred form for making  
> modifications,
> +      including but not limited to software source code,  
> documentation
> +      source, and configuration files.
> +
> +      "Object" form shall mean any form resulting from mechanical
> +      transformation or translation of a Source form, including but
> +      not limited to compiled object code, generated documentation,
> +      and conversions to other media types.
> +
> +      "Work" shall mean the work of authorship, whether in Source or
> +      Object form, made available under the License, as indicated  
> by a
> +      copyright notice that is included in or attached to the work
> +      (an example is provided in the Appendix below).
> +
> +      "Derivative Works" shall mean any work, whether in Source or  
> Object
> +      form, that is based on (or derived from) the Work and for  
> which the
> +      editorial revisions, annotations, elaborations, or other  
> modifications
> +      represent, as a whole, an original work of authorship. For  
> the purposes
> +      of this License, Derivative Works shall not include works  
> that remain
> +      separable from, or merely link (or bind by name) to the  
> interfaces of,
> +      the Work and Derivative Works thereof.
> +
> +      "Contribution" shall mean any work of authorship, including
> +      the original version of the Work and any modifications or  
> additions
> +      to that Work or Derivative Works thereof, that is intentionally
> +      submitted to Licensor for inclusion in the Work by the  
> copyright owner
> +      or by an individual or Legal Entity authorized to submit on  
> behalf of
> +      the copyright owner. For the purposes of this definition,  
> "submitted"
> +      means any form of electronic, verbal, or written  
> communication sent
> +      to the Licensor or its representatives, including but not  
> limited to
> +      communication on electronic mailing lists, source code  
> control systems,
> +      and issue tracking systems that are managed by, or on behalf  
> of, the
> +      Licensor for the purpose of discussing and improving the  
> Work, but
> +      excluding communication that is conspicuously marked or  
> otherwise
> +      designated in writing by the copyright owner as "Not a  
> Contribution."
> +
> +      "Contributor" shall mean Licensor and any individual or Legal  
> Entity
> +      on behalf of whom a Contribution has been received by  
> Licensor and
> +      subsequently incorporated within the Work.
> +
> +   2. Grant of Copyright License. Subject to the terms and  
> conditions of
> +      this License, each Contributor hereby grants to You a  
> perpetual,
> +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
> +      copyright license to reproduce, prepare Derivative Works of,
> +      publicly display, publicly perform, sublicense, and  
> distribute the
> +      Work and such Derivative Works in Source or Object form.
> +
> +   3. Grant of Patent License. Subject to the terms and conditions of
> +      this License, each Contributor hereby grants to You a  
> perpetual,
> +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
> +      (except as stated in this section) patent license to make,  
> have made,
> +      use, offer to sell, sell, import, and otherwise transfer the  
> Work,
> +      where such license applies only to those patent claims  
> licensable
> +      by such Contributor that are necessarily infringed by their
> +      Contribution(s) alone or by combination of their  
> Contribution(s)
> +      with the Work to which such Contribution(s) was submitted. If  
> You
> +      institute patent litigation against any entity (including a
> +      cross-claim or counterclaim in a lawsuit) alleging that the  
> Work
> +      or a Contribution incorporated within the Work constitutes  
> direct
> +      or contributory patent infringement, then any patent licenses
> +      granted to You under this License for that Work shall terminate
> +      as of the date such litigation is filed.
> +
> +   4. Redistribution. You may reproduce and distribute copies of the
> +      Work or Derivative Works thereof in any medium, with or without
> +      modifications, and in Source or Object form, provided that You
> +      meet the following conditions:
> +
> +      (a) You must give any other recipients of the Work or
> +          Derivative Works a copy of this License; and
> +
> +      (b) You must cause any modified files to carry prominent  
> notices
> +          stating that You changed the files; and
> +
> +      (c) You must retain, in the Source form of any Derivative Works
> +          that You distribute, all copyright, patent, trademark, and
> +          attribution notices from the Source form of the Work,
> +          excluding those notices that do not pertain to any part of
> +          the Derivative Works; and
> +
> +      (d) If the Work includes a "NOTICE" text file as part of its
> +          distribution, then any Derivative Works that You  
> distribute must
> +          include a readable copy of the attribution notices  
> contained
> +          within such NOTICE file, excluding those notices that do  
> not
> +          pertain to any part of the Derivative Works, in at least  
> one
> +          of the following places: within a NOTICE text file  
> distributed
> +          as part of the Derivative Works; within the Source form or
> +          documentation, if provided along with the Derivative  
> Works; or,
> +          within a display generated by the Derivative Works, if and
> +          wherever such third-party notices normally appear. The  
> contents
> +          of the NOTICE file are for informational purposes only and
> +          do not modify the License. You may add Your own attribution
> +          notices within Derivative Works that You distribute,  
> alongside
> +          or as an addendum to the NOTICE text from the Work,  
> provided
> +          that such additional attribution notices cannot be  
> construed
> +          as modifying the License.
> +
> +      You may add Your own copyright statement to Your  
> modifications and
> +      may provide additional or different license terms and  
> conditions
> +      for use, reproduction, or distribution of Your modifications,  
> or
> +      for any such Derivative Works as a whole, provided Your use,
> +      reproduction, and distribution of the Work otherwise complies  
> with
> +      the conditions stated in this License.
> +
> +   5. Submission of Contributions. Unless You explicitly state  
> otherwise,
> +      any Contribution intentionally submitted for inclusion in the  
> Work
> +      by You to the Licensor shall be under the terms and  
> conditions of
> +      this License, without any additional terms or conditions.
> +      Notwithstanding the above, nothing herein shall supersede or  
> modify
> +      the terms of any separate license agreement you may have  
> executed
> +      with Licensor regarding such Contributions.
> +
> +   6. Trademarks. This License does not grant permission to use the  
> trade
> +      names, trademarks, service marks, or product names of the  
> Licensor,
> +      except as required for reasonable and customary use in  
> describing the
> +      origin of the Work and reproducing the content of the NOTICE  
> file.
> +
> +   7. Disclaimer of Warranty. Unless required by applicable law or
> +      agreed to in writing, Licensor provides the Work (and each
> +      Contributor provides its Contributions) on an "AS IS" BASIS,
> +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> +      implied, including, without limitation, any warranties or  
> conditions
> +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
> +      PARTICULAR PURPOSE. You are solely responsible for  
> determining the
> +      appropriateness of using or redistributing the Work and  
> assume any
> +      risks associated with Your exercise of permissions under this  
> License.
> +
> +   8. Limitation of Liability. In no event and under no legal theory,
> +      whether in tort (including negligence), contract, or otherwise,
> +      unless required by applicable law (such as deliberate and  
> grossly
> +      negligent acts) or agreed to in writing, shall any  
> Contributor be
> +      liable to You for damages, including any direct, indirect,  
> special,
> +      incidental, or consequential damages of any character arising  
> as a
> +      result of this License or out of the use or inability to use  
> the
> +      Work (including but not limited to damages for loss of  
> goodwill,
> +      work stoppage, computer failure or malfunction, or any and all
> +      other commercial damages or losses), even if such Contributor
> +      has been advised of the possibility of such damages.
> +
> +   9. Accepting Warranty or Additional Liability. While  
> redistributing
> +      the Work or Derivative Works thereof, You may choose to offer,
> +      and charge a fee for, acceptance of support, warranty,  
> indemnity,
> +      or other liability obligations and/or rights consistent with  
> this
> +      License. However, in accepting such obligations, You may act  
> only
> +      on Your own behalf and on Your sole responsibility, not on  
> behalf
> +      of any other Contributor, and only if You agree to indemnify,
> +      defend, and hold each Contributor harmless for any liability
> +      incurred by, or claims asserted against, such Contributor by  
> reason
> +      of your accepting any such warranty or additional liability.
> +
> +   END OF TERMS AND CONDITIONS
> +
> +   APPENDIX: How to apply the Apache License to your work.
> +
> +      To apply the Apache License to your work, attach the following
> +      boilerplate notice, with the fields enclosed by brackets "[]"
> +      replaced with your own identifying information. (Don't include
> +      the brackets!)  The text should be enclosed in the appropriate
> +      comment syntax for the file format. We also recommend that a
> +      file or class name and description of purpose be included on  
> the
> +      same "printed page" as the copyright notice for easier
> +      identification within third-party archives.
> +
> +   Copyright [yyyy] [name of copyright owner]
> +
> +   Licensed under the Apache License, Version 2.0 (the "License");
> +   you may not use this file except in compliance with the License.
> +   You may obtain a copy of the License at
> +
> +       http://www.apache.org/licenses/LICENSE-2.0
> +
> +   Unless required by applicable law or agreed to in writing,  
> software
> +   distributed under the License is distributed on an "AS IS" BASIS,
> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
> implied.
> +   See the License for the specific language governing permissions  
> and
> +   limitations under the License.
> +
> +
> +
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/NOTICE
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/NOTICE?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/NOTICE (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/NOTICE Sun May  
> 25 09:34:16 2008
> @@ -0,0 +1,6 @@
> +${pom.name}
> +Copyright (c) 2005 - 2008 The Apache Software Foundation
> +
> +This product includes software developed by
> +The Apache Software Foundation (http://www.apache.org/).
> +
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/pom.xml?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/pom.xml (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/pom.xml Sun May  
> 25 09:34:16 2008
> @@ -0,0 +1,82 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> +-->
> +<project>
> +    <modelVersion>4.0.0</modelVersion>
> +    <parent>
> +        <groupId>org.apache.tuscany.sca</groupId>
> +        <artifactId>tuscany-modules</artifactId>
> +        <version>2.0-incubating-SNAPSHOT</version>
> +        <relativePath>../pom.xml</relativePath>
> +    </parent>
> +    <artifactId>tuscany-host-openejb</artifactId>
> +    <name>Apache Tuscany SCA OpenEJB Host Extension</name>
> +
> +    <dependencies>
> +        <dependency>
> +            <groupId>org.apache.tuscany.sca</groupId>
> +            <artifactId>tuscany-host-ejb</artifactId>
> +            <version>2.0-incubating-SNAPSHOT</version>
> +        </dependency>
> +
> +        <dependency>
> +            <groupId>org.apache.geronimo.modules</groupId>
> +            <artifactId>geronimo-openejb</artifactId>
> +            <version>2.1.1</version>
> +            <exclusions>
> +                <exclusion>
> +                    <groupId>org.apache.geronimo.modules</groupId>
> +                    <artifactId>geronimo-connector</artifactId>
> +                </exclusion>
> +                <exclusion>
> +                    <groupId>org.apache.geronimo.modules</groupId>
> +                    <artifactId>geronimo-persistence-jpa10</ 
> artifactId>
> +                </exclusion>
> +                <exclusion>
> +                    <groupId>org.apache.openejb</groupId>
> +                    <artifactId>openejb-javaagent</artifactId>
> +                </exclusion>
> +                <exclusion>
> +                    <groupId>com.sun.xml.bind</groupId>
> +                    <artifactId>jaxb-impl</artifactId>
> +                </exclusion>
> +            </exclusions>
> +        </dependency>
> +
> +    </dependencies>
> +
> +    <build>
> +        <plugins>
> +            <plugin>
> +                <groupId>org.apache.felix</groupId>
> +                <artifactId>maven-bundle-plugin</artifactId>
> +
> +                <configuration>
> +                    <instructions>
> +                        <Bundle-Version>${tuscany.version}</Bundle- 
> Version>
> +                        <Bundle- 
> SymbolicName>org.apache.tuscany.sca.host.openejb</Bundle-SymbolicName>
> +                        <Bundle-Description>${pom.name}</Bundle- 
> Description>
> +                        <Export- 
> Package>org.apache.tuscany.sca.host.openejb*</Export-Package>
> +                    </instructions>
> +                </configuration>
> +            </plugin>
> +        </plugins>
> +    </build>
> +
> +</project>
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/src/main/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBRuntimeModuleActivator.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/apache/tuscany/sca/host/openejb/OpenEJBRuntimeModuleActivator.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/src/main/java/ 
> org/apache/tuscany/sca/host/openejb/ 
> OpenEJBRuntimeModuleActivator.java (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/src/main/java/ 
> org/apache/tuscany/sca/host/openejb/ 
> OpenEJBRuntimeModuleActivator.java Sun May 25 09:34:16 2008
> @@ -0,0 +1,52 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.host.openejb;
> +
> +import java.util.logging.Logger;
> +
> +import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> +import org.apache.tuscany.sca.core.ModuleActivator;
> +import org.apache.tuscany.sca.host.ejb.EJBHostExtensionPoint;
> +
> +/**
> + * @version $Rev$ $Date$
> + */
> +public class OpenEJBRuntimeModuleActivator implements  
> ModuleActivator {
> +    private static final Logger logger =  
> Logger.getLogger(OpenEJBRuntimeModuleActivator.class.getName());
> +
> +    private OpenEJBServer server;
> +
> +    public void start(ExtensionPointRegistry  
> extensionPointRegistry) {
> +
> +        // Register our EJB host
> +        EJBHostExtensionPoint ejbHosts =
> +             
> extensionPointRegistry.getExtensionPoint(EJBHostExtensionPoint.class);
> +
> +        server = new OpenEJBServer();
> +        ejbHosts.addEJBHost(server);
> +    }
> +
> +    public void stop(ExtensionPointRegistry registry) {
> +        if (server != null) {
> +            server.stop();
> +        }
> +    }
> +
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/src/main/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBServer.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/apache/tuscany/sca/host/openejb/OpenEJBServer.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/src/main/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBServer.java (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/src/main/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBServer.java Sun May 25  
> 09:34:16 2008
> @@ -0,0 +1,130 @@
> +package org.apache.tuscany.sca.host.openejb;
> +
> +import java.io.IOException;
> +import java.util.Properties;
> +
> +import javax.naming.NamingException;
> +
> +import org.apache.openejb.OpenEJB;
> +import org.apache.openejb.OpenEJBException;
> +import org.apache.openejb.assembler.classic.Assembler;
> +import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
> +import org.apache.openejb.assembler.classic.SecurityServiceInfo;
> +import  
> org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
> +import org.apache.openejb.assembler.classic.TransactionServiceInfo;
> +import org.apache.openejb.config.ConfigurationFactory;
> +import org.apache.openejb.core.ServerFederation;
> +import org.apache.openejb.jee.EjbJar;
> +import org.apache.openejb.jee.StatelessBean;
> +import org.apache.openejb.loader.SystemInstance;
> +import org.apache.openejb.server.ServiceDaemon;
> +import org.apache.openejb.server.ServiceException;
> +import org.apache.openejb.server.ejbd.EjbServer;
> +import org.apache.tuscany.sca.host.ejb.EJBHost;
> +import org.apache.tuscany.sca.host.ejb.EJBRegistrationException;
> +import org.apache.tuscany.sca.host.ejb.EJBSessionBean;
> +
> +/**
> + * OpenEJB-based EJB host implementation.
> + *
> + * @version $Rev: $ $Date: $
> + */
> +public class OpenEJBServer implements EJBHost {
> +
> +    private boolean started;
> +    private EjbServer ejbServer;
> +    private ServiceDaemon serviceDaemon;
> +    private ConfigurationFactory config;
> +    private Assembler assembler;
> +
> +    public void addSessionBean(String ejbName, EJBSessionBean  
> sessionBean) throws EJBRegistrationException {
> +        if (!started) {
> +            start();
> +        }
> +
> +        try {
> +            StatelessBean bean = new StatelessBean(ejbName,  
> sessionBean.getImplementationClass());
> +             
> bean.addBusinessRemote(sessionBean.getRemoteInterface().getName());
> +            bean.addPostConstruct("init");
> +            bean.addPreDestroy("destroy");
> +
> +            EjbJar ejbJar = new EjbJar();
> +            ejbJar.addEnterpriseBean(bean);
> +
> +             
> assembler.createApplication(config.configureApplication(ejbJar));
> +
> +        } catch (NamingException e) {
> +            throw new EJBRegistrationException(e);
> +        } catch (IOException e) {
> +            throw new EJBRegistrationException(e);
> +        } catch (OpenEJBException e) {
> +            throw new EJBRegistrationException(e);
> +        }
> +    }
> +
> +    public EJBSessionBean getSessionBean(String ejbName) throws  
> EJBRegistrationException {
> +        // TODO Auto-generated method stub
> +        return null;
> +    }
> +
> +    public EJBSessionBean removeSessionBean(String ejbName) throws  
> EJBRegistrationException {
> +        // TODO Auto-generated method stub
> +        return null;
> +    }
> +
> +    /**
> +     * Start the OpenEJB server.
> +     *
> +     * @throws EJBRegistrationException
> +     */
> +    private void start() throws EJBRegistrationException {
> +        try {
> +            Properties properties = new Properties();
> +            SystemInstance.init(properties);
> +
> +            ejbServer = new EjbServer();
> +            SystemInstance.get().setComponent(EjbServer.class,  
> ejbServer);
> +            OpenEJB.init(properties, new ServerFederation());
> +            ejbServer.init(properties);
> +
> +            serviceDaemon = new ServiceDaemon(ejbServer, 2888,  
> "localhost");
> +            serviceDaemon.start();
> +
> +            config = new ConfigurationFactory();
> +            assembler = new Assembler();
> +             
> assembler 
> .createProxyFactory(config.configureService(ProxyFactoryInfo.class));
> +             
> assembler 
> .createTransactionManager 
> (config.configureService(TransactionServiceInfo.class));
> +             
> assembler 
> .createSecurityService 
> (config.configureService(SecurityServiceInfo.class));
> +
> +            // containers
> +            StatelessSessionContainerInfo statelessContainerInfo =  
> config.configureService(StatelessSessionContainerInfo.class);
> +             
> statelessContainerInfo.properties.setProperty("TimeOut", "10");
> +             
> statelessContainerInfo.properties.setProperty("PoolSize", "0");
> +             
> statelessContainerInfo.properties.setProperty("StrictPooling",  
> "false");
> +            assembler.createContainer(statelessContainerInfo);
> +
> +        } catch (OpenEJBException e) {
> +            throw new EJBRegistrationException(e);
> +        } catch (Exception e) {
> +            throw new EJBRegistrationException(e);
> +        }
> +
> +        started = true;
> +    }
> +
> +    /**
> +     * Stop the OpenEJB server.
> +     */
> +    void stop() {
> +        if (started) {
> +            try {
> +                serviceDaemon.stop();
> +            } catch (ServiceException e) {
> +                throw new EJBRegistrationException(e);
> +            }
> +        }
> +        SystemInstance.get().removeComponent(EjbServer.class);
> +        OpenEJB.destroy();
> +    }
> +
> +}
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/src/main/ 
> resources/META-INF/services/ 
> org.apache.tuscany.sca.core.ModuleActivator
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/src/main/ 
> resources/META-INF/services/ 
> org.apache.tuscany.sca.core.ModuleActivator (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/src/main/ 
> resources/META-INF/services/ 
> org.apache.tuscany.sca.core.ModuleActivator Sun May 25 09:34:16 2008
> @@ -0,0 +1,19 @@
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership.  The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License.  You may obtain a copy of the License at
> +#
> +#   http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing,
> +# software distributed under the License is distributed on an
> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +# KIND, either express or implied.  See the License for the
> +# specific language governing permissions and limitations
> +# under the License.
> +
> +# Implementation class for the ModuleActivator
> +org.apache.tuscany.sca.host.openejb.OpenEJBRuntimeModuleActivator
>
> Added: incubator/tuscany/java/sca/modules/host-openejb/src/test/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBServerTestCase.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-openejb/src/test/java/org/apache/tuscany/sca/host/openejb/OpenEJBServerTestCase.java?rev=659997&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/host-openejb/src/test/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBServerTestCase.java (added)
> +++ incubator/tuscany/java/sca/modules/host-openejb/src/test/java/ 
> org/apache/tuscany/sca/host/openejb/OpenEJBServerTestCase.java Sun  
> May 25 09:34:16 2008
> @@ -0,0 +1,87 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.tuscany.sca.host.openejb;
> +
> +import java.util.Properties;
> +
> +import javax.naming.Context;
> +import javax.naming.InitialContext;
> +
> +import junit.framework.TestCase;
> +
> +import org.apache.openejb.core.ivm.naming.InitContextFactory;
> +import org.apache.tuscany.sca.host.ejb.EJBSessionBean;
> +
> +/**
> + * @version $Rev$ $Date$
> + */
> +public class OpenEJBServerTestCase extends TestCase {
> +
> +    public interface TestRemote {
> +        String test(String s);
> +    }
> +
> +    public static class TestImpl implements TestRemote {
> +
> +        public TestImpl() {
> +        }
> +
> +        public String test(String s) {
> +            return s.toUpperCase();
> +        }
> +
> +        public void init() {
> +        }
> +
> +        public void destroy() {
> +        }
> +    }
> +
> +    private OpenEJBServer server;
> +
> +    @Override
> +    protected void setUp() throws Exception {
> +        server = new OpenEJBServer();
> +    }
> +
> +    @Override
> +    protected void tearDown() throws Exception {
> +        server.stop();
> +    }
> +
> +    /**
> +     * Verifies registration and invocation of a session bean
> +     */
> +    public void testStatelessSessionBean() throws Exception {
> +        server.addSessionBean("TestBean", new  
> EJBSessionBean(TestImpl.class, TestRemote.class));
> +
> +        Properties properties = new  
> Properties(System.getProperties());
> +        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,  
> InitContextFactory.class.getName());
> +        //properties.put(Context.INITIAL_CONTEXT_FACTORY,  
> "org.apache.openejb.client.RemoteInitialContextFactory");
> +        //properties.put(Context.PROVIDER_URL, "ejbd://localhost: 
> 2888");
> +        InitialContext ctx = new InitialContext(properties);
> +        Object object = ctx.lookup("TestBeanRemote");
> +        assertTrue(object instanceof TestRemote);
> +
> +        TestRemote testRemote = (TestRemote)object;
> +        String s = testRemote.test("test");
> +        assertEquals("TEST", s);
> +    }
> +
> +}
>
> Modified: incubator/tuscany/java/sca/modules/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/pom.xml?rev=659997&r1=659996&r2=659997&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- incubator/tuscany/java/sca/modules/pom.xml (original)
> +++ incubator/tuscany/java/sca/modules/pom.xml Sun May 25 09:34:16  
> 2008
> @@ -99,8 +99,10 @@
>                 <module>endpoint</module>
>                 <module>extensibility</module>
>                 <module>extension-helper</module>
> +                <module>host-ejb</module>
>                 <module>host-embedded</module>
>                 <module>host-http</module>
> +                <module>host-openejb</module>
>                 <module>host-rmi</module>
>                 <module>host-webapp</module>
>                 <module>host-webapp-junit</module>
>
>
>


Re: svn commit: r659997 - in /incubator/tuscany/java/sca/modules: ./ host-ejb/ host-ejb/src/ host-ejb/src/main/ host-ejb/src/main/java/ host-ejb/src/main/java/org/ host-ejb/src/main/java/org/apache/ host-ejb/src/main/java/org/apache/tuscany/ host-ejb/src/m...

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Jean-Sebastien Delfino wrote:
> David Blevins wrote:
>> This looks really cool.
>>
>> If you guys want any special features, definitely let us know.  We've 
>> got a 3.0.1 coming down the pipe soon-ish.
> 
> OK great, Thanks! I'm just starting to look into this, right now I'm 
> able to register session beans implemented as POJOs, find them in JNDI 
> using org.apache.openejb.core.ivm.naming.InitContextFactory and invoke 
> them.
> 
> I've not been able to get the same working with a remote JNDI factory 
> (org.apache.openejb.client.RemoteInitialContextFactory) yet. I'm just 
> guessing at this point but I'm probably missing something in the 
> initialization of the EJB server [1] for that to work.

I've fixed that part in SVN r660759.

> 
> Also at the moment I'm just registering a POJO that implements the 
> Session bean business interface. Is there a way to register some kind of 
> generic handler (like an Interceptor maybe?) to receive the invocation 
> and any context that goes with it? I think I'll need that to dispatch 
> incoming calls in a generic way to the Tuscany runtime to support 
> non-POJO SCA components (BPEL, scripts etc).
> 
> Looking at your StatelessInterceptorTest test case, registering OpenEJB 
> interceptors looks easy but I'm not sure if it's the best way to 
> implement that. Any thoughts?
> 
>>
>> Don't know much of anything about the Tuscany architecture, but 
>> noticing you've got a module called host-http.  We have some code in 
>> openejb-http that can support EJB invocations over HTTP which you may 
>> like.  Might be nice if you don't want to have special ports open just 
>> for ejb, could do it all over the existing http setup.
> 
> The basic idea is to help people integrate SCA components (POJOs, 
> scripts, BPEL processes etc) and EJB session beans using SCA EJB bindings.
> 
> SCA client components can already use EJB bindings to reference EJBs, 
> like this:
> <component name="MyClient">
>   <implementation.java class="...MyClass"/>
>   <reference name="myEJBService">
>     <binding.ejb uri="jndiname or corbaname"/>
>   </reference>
> </component>
> 
> We've already implemented that client side support using the JDK ORB to 
> invoke the EJB using the Corba DII, and it already works with OpenEJB.
> 
> Now I'm trying to complete the picture and allow an SCA component to 
> configure its services using EJB bindings, like this:
> <component name="MyServiceComponent">
>   <implementation.java class="...MyClass"/>
>   <service name="MyService">
>     <binding.ejb uri="jndiname or corbaname"/>
>   </service>
> </component>
> 
> allowing EJBs (running on the same OpenEJB server or even a different 
> server) to reference and invoke the SCA component as if it was just 
> another EJB.
> 
>> You just need a servlet like this one:
>> https://svn.apache.org/repos/asf/openejb/tags/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/ServerServlet.java 
>>
>>
>> Been thinking to move that into the openejb-http module for a while, 
>> seems like a good reason to finally do it.
> 
> That looks cool, I'll take a look, as you said it could be useful to 
> avoid opening additional ports. I have two questions:
> 
> - What would we need to do to support that HTTP based EJB invocation 
> from our client/reference side EJB binding (which currently only 
> supports CORBA)
> 
> - What does that interoperate with? just OpenEJB or do other EJB 
> containers support that to?
> 
>> -David
>>
> [1] 
> http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/apache/tuscany/sca/host/openejb/OpenEJBServer.java 
> 
> 


-- 
Jean-Sebastien

Re: svn commit: r659997 - in /incubator/tuscany/java/sca/modules: ./ host-ejb/ host-ejb/src/ host-ejb/src/main/ host-ejb/src/main/java/ host-ejb/src/main/java/org/ host-ejb/src/main/java/org/apache/ host-ejb/src/main/java/org/apache/tuscany/ host-ejb/src/m...

Posted by Jean-Sebastien Delfino <js...@apache.org>.
David Blevins wrote:
> This looks really cool.
> 
> If you guys want any special features, definitely let us know.  We've 
> got a 3.0.1 coming down the pipe soon-ish.

OK great, Thanks! I'm just starting to look into this, right now I'm 
able to register session beans implemented as POJOs, find them in JNDI 
using org.apache.openejb.core.ivm.naming.InitContextFactory and invoke them.

I've not been able to get the same working with a remote JNDI factory 
(org.apache.openejb.client.RemoteInitialContextFactory) yet. I'm just 
guessing at this point but I'm probably missing something in the 
initialization of the EJB server [1] for that to work.

Also at the moment I'm just registering a POJO that implements the 
Session bean business interface. Is there a way to register some kind of 
generic handler (like an Interceptor maybe?) to receive the invocation 
and any context that goes with it? I think I'll need that to dispatch 
incoming calls in a generic way to the Tuscany runtime to support 
non-POJO SCA components (BPEL, scripts etc).

Looking at your StatelessInterceptorTest test case, registering OpenEJB 
interceptors looks easy but I'm not sure if it's the best way to 
implement that. Any thoughts?

> 
> Don't know much of anything about the Tuscany architecture, but noticing 
> you've got a module called host-http.  We have some code in openejb-http 
> that can support EJB invocations over HTTP which you may like.  Might be 
> nice if you don't want to have special ports open just for ejb, could do 
> it all over the existing http setup.

The basic idea is to help people integrate SCA components (POJOs, 
scripts, BPEL processes etc) and EJB session beans using SCA EJB bindings.

SCA client components can already use EJB bindings to reference EJBs, 
like this:
<component name="MyClient">
   <implementation.java class="...MyClass"/>
   <reference name="myEJBService">
     <binding.ejb uri="jndiname or corbaname"/>
   </reference>
</component>

We've already implemented that client side support using the JDK ORB to 
invoke the EJB using the Corba DII, and it already works with OpenEJB.

Now I'm trying to complete the picture and allow an SCA component to 
configure its services using EJB bindings, like this:
<component name="MyServiceComponent">
   <implementation.java class="...MyClass"/>
   <service name="MyService">
     <binding.ejb uri="jndiname or corbaname"/>
   </service>
</component>

allowing EJBs (running on the same OpenEJB server or even a different 
server) to reference and invoke the SCA component as if it was just 
another EJB.

> You just need a servlet like this one:
> https://svn.apache.org/repos/asf/openejb/tags/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/ServerServlet.java 
> 
> 
> Been thinking to move that into the openejb-http module for a while, 
> seems like a good reason to finally do it.

That looks cool, I'll take a look, as you said it could be useful to 
avoid opening additional ports. I have two questions:

- What would we need to do to support that HTTP based EJB invocation 
from our client/reference side EJB binding (which currently only 
supports CORBA)

- What does that interoperate with? just OpenEJB or do other EJB 
containers support that to?

> -David
> 
[1] 
http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/host-openejb/src/main/java/org/apache/tuscany/sca/host/openejb/OpenEJBServer.java

-- 
Jean-Sebastien