Hi Simon, thanks for this. I guess what I am asking - as I am just coming back to java - is how can I "publish" the contributions' jar without doing it manually. I don't want to use a "contribution location="file://" style url, but have the jar made avaliable somewhere under - in this example - http://<hostname>:9990/.
Cheers, Malte. On Tue, Jul 29, 2008 at 6:16 PM, Simon Laws <[EMAIL PROTECTED]>wrote: > > > On Tue, Jul 29, 2008 at 5:25 AM, Malte Marquarding < > [EMAIL PROTECTED]> wrote: > >> Hi, >> I had a look at it myself. I now understand that I can set the url in >> 'workspace.xml' - RTFM . How do I package/deploy contribution as a jar >> file. Or should I leave this to you by submitting a JIRA? >> >> Cheers, >> Malte >> >> >> On Sat, Jul 26, 2008 at 12:17 AM, Simon Laws <[EMAIL PROTECTED]>wrote: >> >>> >>> >>> On Fri, Jul 25, 2008 at 2:59 PM, Simon Laws <[EMAIL PROTECTED]> >>> wrote: >>> >>>> >>>> >>>> On Fri, Jul 25, 2008 at 6:33 AM, Malte Marquarding < >>>> [EMAIL PROTECTED]> wrote: >>>> >>>>> Also, why doesn't it look it up in the jar? I edited the ant script to >>>>> include the path and remove the src directory, but that didn't help. >>>>> >>>>> Cheers, >>>>> Malte. >>>>> >>>>> On Fri, Jul 25, 2008 at 2:49 PM, Malte Marquarding < >>>>> [EMAIL PROTECTED]> wrote: >>>>> >>>>>> Hi, >>>>>> I made some progress. The problem is that the 'nodeB' composite file >>>>>> is looked up with an absolute path of server1 location of the file on >>>>>> server2. I hope you know what I mean. I found this by moving both server1 >>>>>> and server2 code into '/tmp' - the same location. >>>>>> Now the example runs happily. >>>>>> Shouldn't the file look up be relative. This seems to be a bug. >>>>>> >>>>>> Cheers, >>>>>> Malte. >>>>>> >>>>>> >>>>>> On Fri, Jul 25, 2008 at 10:10 AM, Malte Marquarding < >>>>>> [EMAIL PROTECTED]> wrote: >>>>>> >>>>>>> Hi Simon, >>>>>>> that's exactly what I did the very first time I tried this (before >>>>>>> asking for help). I do get the same exception with respect ro >>>>>>> FileNotFound >>>>>>> on Host1 (server running domain). >>>>>>> >>>>>>> This is what the domain log says >>>>>>> >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.CompositeImageCollectionImpl >>>>>>> doGet >>>>>>> [java] INFO: get NodeB >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.DeployedCompositeCollectionImpl >>>>>>> getAll >>>>>>> [java] INFO: getAll >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.DeployableCompositeCollectionImpl >>>>>>> get >>>>>>> [java] INFO: get composite: >>>>>>> http://tuscany.apache.org/cloud;http://sample/cloud;NodeA >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.ContributionCollectionImpl >>>>>>> get >>>>>>> [java] INFO: get http://tuscany.apache.org/cloud >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.DeployableCompositeCollectionImpl >>>>>>> get >>>>>>> [java] INFO: get composite: >>>>>>> http://tuscany.apache.org/cloud;http://sample/cloud;NodeB >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.ContributionCollectionImpl >>>>>>> get >>>>>>> [java] INFO: get http://tuscany.apache.org/cloud >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.DeployableCompositeCollectionImpl >>>>>>> get >>>>>>> [java] INFO: get composite: >>>>>>> http://tuscany.apache.org/cloud;http://sample/cloud;NodeC >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.ContributionCollectionImpl >>>>>>> get >>>>>>> [java] INFO: get http://tuscany.apache.org/cloud >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.binding.atom.provider.AtomBindingListenerServlet >>>>>>> doGet >>>>>>> [java] INFO: >>> FeedEndPointServlet /composite-image/ >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.CompositeImageCollectionImpl >>>>>>> query >>>>>>> [java] INFO: query composite=composite:nodeB;http://sample >>>>>>> ;CalculatorB >>>>>>> [java] Jul 25, 2008 10:03:53 AM >>>>>>> org.apache.tuscany.sca.workspace.admin.impl.ContributionCollectionImpl >>>>>>> query >>>>>>> [java] INFO: query alldependencies=nodeB >>>>>>> >>>>>>> >>>>>>> Cheers, >>>>>>> Malte >>>>>>> >>>>>>> >>>>>>> On Fri, Jul 25, 2008 at 2:14 AM, Simon Laws < >>>>>>> [EMAIL PROTECTED]> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Jul 22, 2008 at 12:53 AM, Malte Marquarding < >>>>>>>> [EMAIL PROTECTED]> wrote: >>>>>>>> >>>>>>>>> Hi Simon, >>>>>>>>> I did the following >>>>>>>>> >>>>>>>>> Host 1: >>>>>>>>> ant runDomain >>>>>>>>> >>>>>>>>> Host 2: >>>>>>>>> I modified in my case the NodeB launcher to run in the remote >>>>>>>>> location. I get an exception because it can find the artefacts >>>>>>>>> >>>>>>>>> ant runDomain >>>>>>>>> ant runNodeB >>>>>>>>> >>>>>>>>> [java] INFO: Loading contribution: >>>>>>>>> file:/Users/me/java/tuscany-sca-1.2.1-incubating/samples/calculator-distributed/./src/main/resources/nodeB/ >>>>>>>>> [java] 22/07/2008 09:21:53 >>>>>>>>> org.apache.tuscany.sca.node.launcher.NodeLauncherUtil node >>>>>>>>> [java] SEVERE: SCA Node could not be created >>>>>>>>> [java] java.lang.reflect.InvocationTargetException >>>>>>>>> [java] at >>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >>>>>>>>> [java] at >>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) >>>>>>>>> [java] at >>>>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) >>>>>>>>> [java] at >>>>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:494) >>>>>>>>> [java] at >>>>>>>>> org.apache.tuscany.sca.node.launcher.NodeLauncherUtil.node(NodeLauncherUtil.java:297) >>>>>>>>> [java] at >>>>>>>>> org.apache.tuscany.sca.node.launcher.NodeLauncher.createNode(NodeLauncher.java:60) >>>>>>>>> [java] at >>>>>>>>> org.apache.tuscany.sca.node.launcher.NodeLauncher.main(NodeLauncher.java:109) >>>>>>>>> [java] at >>>>>>>>> node.LaunchCalculatorNodeB.main(LaunchCalculatorNodeB.java:26) >>>>>>>>> [java] Caused by: org.osoa.sca.ServiceRuntimeException: >>>>>>>>> java.io.FileNotFoundException: >>>>>>>>> /Users/me/java/tuscany-sca-1.2.1-incubating/samples/calculator-distributed/./src/main/resources/nodeB >>>>>>>>> (No such file or directory) >>>>>>>>> >>>>>>>>> This directory is present on the remote domain (host 1) >>>>>>>>> >>>>>>>>> ls >>>>>>>>> /Users/me/java/tuscany-sca-1.2.1-incubating/samples/calculator-distributed/./src/main/resources/nodeB >>>>>>>>> 8 Calculator.composite 0 META-INF/ >>>>>>>>> >>>>>>>>> What else am I missing? >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> Malte. >>>>>>>>> >>>>>>>>> On Mon, Jul 21, 2008 at 9:20 PM, Simon Laws < >>>>>>>>> [EMAIL PROTECTED]> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Jul 21, 2008 at 9:40 AM, Malte Marquarding < >>>>>>>>>> [EMAIL PROTECTED]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> Thanks that works. >>>>>>>>>>> >>>>>>>>>>> Does that mean you are running two domains? This is exactly what >>>>>>>>>>> I stumbled over. I remote domain manger would certainly be good. >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> Malte >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Jul 21, 2008 at 3:06 PM, Luciano Resende < >>>>>>>>>>> [EMAIL PROTECTED]> wrote: >>>>>>>>>>> >>>>>>>>>>>> The calculator-distributed already runs in multiple VM. Let me >>>>>>>>>>>> describe the steps I had to do in order to run the sample in two >>>>>>>>>>>> different machines. >>>>>>>>>>>> >>>>>>>>>>>> In one of the machine, I ran NodeB and NodeC by doing the >>>>>>>>>>>> following : >>>>>>>>>>>> >>>>>>>>>>>> ant runDomain >>>>>>>>>>>> ant runNodeB >>>>>>>>>>>> ant runNodeC >>>>>>>>>>>> >>>>>>>>>>>> In the other machine, I ran NodeA that would connect to the >>>>>>>>>>>> remote >>>>>>>>>>>> nodes (nodeB and NodeC). I have to modify the node composites, >>>>>>>>>>>> to >>>>>>>>>>>> properly identify the remote uri for the nodes as follow : >>>>>>>>>>>> >>>>>>>>>>>> <component name="NodeB"> >>>>>>>>>>>> <t:implementation.node uri="nodeB" >>>>>>>>>>>> composite="s:CalculatorB"/> >>>>>>>>>>>> <service name="Node"> >>>>>>>>>>>> <binding.sca uri="http://tuscany1.domain.com:8200"/> >>>>>>>>>>>> </service> >>>>>>>>>>>> </component> >>>>>>>>>>>> >>>>>>>>>>>> <component name="NodeC"> >>>>>>>>>>>> <t:implementation.node uri="nodeC" >>>>>>>>>>>> composite="s:CalculatorC"/> >>>>>>>>>>>> <service name="Node"> >>>>>>>>>>>> <binding.sca uri=" >>>>>>>>>>>> http://tuscany1.domain.com:8300"/> >>>>>>>>>>>> </service> >>>>>>>>>>>> </component> >>>>>>>>>>>> >>>>>>>>>>>> Then I ran nodeA : >>>>>>>>>>>> >>>>>>>>>>>> ant runDomain >>>>>>>>>>>> ant runNodeA >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> The only thing I'm not sure is how I would tell the node to >>>>>>>>>>>> connect to >>>>>>>>>>>> a remote domain manager, that would simplify the steps to run >>>>>>>>>>>> nodeA. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Sun, Jul 20, 2008 at 6:41 PM, Malte Marquarding >>>>>>>>>>>> <[EMAIL PROTECTED]> wrote: >>>>>>>>>>>> > Hi, >>>>>>>>>>>> > any takers? I tried the API docs, but they are outdated - JIRA >>>>>>>>>>>> submitted and >>>>>>>>>>>> > trying to build from source. >>>>>>>>>>>> > Cheers, >>>>>>>>>>>> > Malte >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Luciano Resende >>>>>>>>>>>> Apache Tuscany Committer >>>>>>>>>>>> http://people.apache.org/~lresende<http://people.apache.org/%7Elresende> >>>>>>>>>>>> http://lresende.blogspot.com/ >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> Hi >>>>>>>>>> >>>>>>>>>> In the case of samples/calculator-distributed the node launchers >>>>>>>>>> are hard coded to talk to the domain at "http://localhost:9990". >>>>>>>>>> If you look in each of the node launcher classes you will see lines >>>>>>>>>> like... >>>>>>>>>> >>>>>>>>>> NodeLauncher.main(new String[] {" >>>>>>>>>> http://localhost:9990/node-config/NodeC"}); >>>>>>>>>> >>>>>>>>>> To run the domain in a remote location change the localhost here >>>>>>>>>> to the host where the domain is running or write some launcher code >>>>>>>>>> that >>>>>>>>>> takes this URL as a parameter. >>>>>>>>>> >>>>>>>>>> The launcher for nodeA is slightly different from the launchers >>>>>>>>>> for B and C in that it goes on to make the test calls but in all >>>>>>>>>> these cases >>>>>>>>>> it wouldn't be hard to change to accept the domain configuration URL >>>>>>>>>> as a >>>>>>>>>> command line argument. If you decide to give this a go make a patch >>>>>>>>>> and we >>>>>>>>>> can update the sample. >>>>>>>>>> >>>>>>>>>> Regards >>>>>>>>>> >>>>>>>>>> Simon >>>>>>>>>> >>>>>>>>>> >>>>>>>> Hi Malte >>>>>>>> >>>>>>>> Sorry this is such a late reply. I just didn't notice this come >>>>>>>> through. You may have got past this now but anyhow.... >>>>>>>> >>>>>>>> You don't need to do "ant runDomain" on Host2. >>>>>>>> >>>>>>>> Your changes to the NodeB launcher should point it at the domain >>>>>>>> running on Host1. Hence you don't need the domain running on Host2. >>>>>>>> Just the >>>>>>>> NodeB runs on Host2. >>>>>>>> >>>>>>>> Regards >>>>>>>> >>>>>>>> Simon >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> Hi Malte >>>> >>>> This sounds like a bug to me. Can you raise a JIRA for it ( >>>> http://issues.apache.org/jira/browse/TUSCANY) and lets see if we can >>>> get it fixed. >>>> >>>> Thanks >>>> >>>> Simon >>>> >>> >>> >>> Hi Malte >>> >>> A bit more information. I've just been trying this and I do see the >>> problem you see when running across machines. The strange file read >>> exception you are seeing occurs because the domain is trying to provide the >>> remote node (NodeB) with a file system based contribution. When you run the >>> node the configuration URL (http://9.20.188.196:9990/node-config/NodeB) >>> is used to ask the domain for two things. >>> >>> 1 - the composite that is configured by the domain to represent the >>> correct domain configuration. The actual result here is that all the service >>> and reference URIs are filled in based on where each node is to be deployed >>> using information from the node.composite files. >>> 2 - the contributions that are required to provide the artifacts needed >>> to run the composite at this node >>> >>> This sample has been written to work directly from the file system so >>> that it's straightforward to edit and recompile. However this does cause >>> the problem that you are seeing as the domain cannot provide a file system >>> based contribution out to the remote node. What we need to do to make this >>> work across nodes is package each nodes contribution as a jar. >>> >>> So please go ahead and raise a JIRA and I'll look at it as it seems >>> natural to want to try the calculator distributed in a distributed >>> environment. >>> >>> Regards >>> >>> Simon >>> >>> >> > Hi Malte > > There's nothing particularly special about a contribution packaged as a > jar. It can simply just be any old jar file. There are some SCA specific > things you may find in a contribution, and hence in a contribution packaged > as a jar, such as a ".composite" file or a "META-INF/sca-contribution.xml" > file. A good place to look for an example is the store tutorial. Here the > store application is built up by deploying a number of jar based > contributions. You can see the "store" contribution at [1]. You can see the > way that the domain is build up at [2]. There are quite a lot of > contributions here as the application is presented in a number of different > configurations for tutorial purposes [3] > > Regards > > Simon > > [1] > http://svn.apache.org/repos/asf/tuscany/java/sca/tutorials/store/store/ > [2] > http://svn.apache.org/repos/asf/tuscany/java/sca/tutorials/store/domain/ > [3] > http://svn.apache.org/repos/asf/tuscany/java/sca/tutorials/store/Tutorial.pdf >
