• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Cannot start multiple sessions in CS6

New Here ,
Nov 05, 2012 Nov 05, 2012

Copy link to clipboard

Copied

Hi,

I am trying the new multi threads feature from IDS CS6 (contra using multiple instances).

But I seem unable to start several sessions from the same client.

I do have a machine with 4 core processors (even a multi-instances license), so I should be able to start 4 sessions in parallel.

I start a single IDS instance with SOAP on port 12345.

Using SoapUI:

- I make a call to "BeginSession": it returns successfully (for example sessionID 2)

- If I make a second call to "BeginSession", it returns a SOAP fault telling me that the call is already part of a session...

- If I make a third call, it returns successfully (sessionID 3)

- And so on, every second call will fail

- Furthermore, it seems that the failing call triggers the end of the previous session, because I am unable to call EndSession after that. It would explain why every second call will succeed.

- if I call BeginSession, then EndSession, BeginSession, EndSession... it works without problem.

I also tried using two different clients running from two different computers, against the same InDesign Server:

- Call BeginSession from client 1: success

- Call BeginSession from client 2: success

- Call EndSession from client 1: success

- Call EndSession from client 2: success

- If a client tries to open a two sessions in a row (without callind EndSession on the first one), it fails as I described in the first case above.

- If a client tries to close the session opened by the other client, I get a SOAP fault too.

So in conclusion, are we limited to open only one session per client???

Does IDS CS6 retain information on which client opened which session, and then ensure to have a maximum of one session per client?

This is a big problem, as I want a unique controller opening the sessions and running all server script calls... It should definitely need to open several sessions in parallel, else there would be no point in using multi-sessions instead of multi-instances.

Thanks for your help,

Martin

Views

6.2K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 19, 2012 Nov 19, 2012

Copy link to clipboard

Copied

We can also reproduce what you say.

We opened a support case @ adobe, but have no solution yet

For the moment, the session implementation is useless.

I tried this on Adobe Indesign Server CS6 Win and Mac.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 19, 2012 Nov 19, 2012

Copy link to clipboard

Copied

I also opened a support case two weeks ago and am awaiting an answer there.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 19, 2012 Nov 19, 2012

Copy link to clipboard

Copied

We opened a support case too!!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 09, 2012 Dec 09, 2012

Copy link to clipboard

Copied

I got an answer from Adobe support, with a modified sample-client java code demonstrating how to achieve that. I guess the key difference in their sample was that they were using Axis1 and not Axis2. They were also manually adding the session id in a SOAP header.

I tried that in my own application and got it working, yet it was annoying to have to downgrade from Axis2 to Axis1.

Maybe there is a way to configure Axis2 correctly, I didn't manage it yet. It seems that in a lower layer, maybe at the transport layer, Axis2 can only support one call at a time to the same URL endpoint, even if I create different stubs.

It must be the same implementation issue in SoapUI.

If anybody succeed implementing this in anything else than Axis1, let me know!

(And if some of you are interested, I wrote a little analysis of the multi-sessions feature after getting it working: http://www.ctrlpublishing.com/en/home/blog/102-ids-cs6-multiple-instances-vs-multiple-sessions. Let me hear your thoughts.)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Jan 11, 2013 Jan 11, 2013

Copy link to clipboard

Copied

Martin,

I don't think it's a Axis1 related solution; we just finished a test by generating a Java client with Axis2 and it works as expected. The only thing to be done to have everything working is to have the "service" object to be instantiated every time you need to call a "BeginSession" method; the question seems you can only have a BeginSession call inside a "service" object.

But it works with Axis as well.

Best,

Luca

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jan 11, 2013 Jan 11, 2013

Copy link to clipboard

Copied

Ok thanks.

Isn't it an expensive operation to instantiate a service each time?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Jan 14, 2013 Jan 14, 2013

Copy link to clipboard

Copied

Hello Martin,

what do you mean by expensive? Isn't it true the same is done by the example furnished by Adobe even if they are using Axis1?

Best,

Luca

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jan 18, 2013 Jan 18, 2013

Copy link to clipboard

Copied

I meant time expensive to recreate the Axis service for each session start.

In my case with Axis1, one service instance is created at bootstrap per "parallel session" I will need, for example I'll create 4 services on a 4 cores machines, but then I'll simply create new sessions with the same service, without needing to destroy and recreate all Axis objects.

But maybe this doesn't have a big impact on the execution time.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 03, 2013 Jul 03, 2013

Copy link to clipboard

Copied

Hi Martin,

Can you pls post the code of sample-client.java which you got from Adobe support. I tried with the axis1 to run multiple sessions as you explained but could not get the expected results.

Best Regards,

Dinesh

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 04, 2013 Jul 04, 2013

Copy link to clipboard

Copied

Hi,

Here is a link to the code I got:

https://dl.dropboxusercontent.com/u/371214/IDS%20Multisession.zip

Best Regards,

/Martin

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 04, 2013 Jul 04, 2013

Copy link to clipboard

Copied

Thank you very much Martin.

Best Regards,

Dinesh.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 07, 2013 Jul 07, 2013

Copy link to clipboard

Copied

Hi Martin,

I just thought to get some input from you regarding the following matter. I tried to execute the sample code and it gave me the following error. I have used the axis 1 also.

Java Console Output

Session A: Creating New Doc 1

begin session : 2

Using session : 2

Script success

: Script reported no errors

Session B: Creating New Doc 2

begin session : 3

Using session : 3

Script success

: Script reported no errors

Session A: Add Text Frame To Doc 1

Using session : 2

Session B: Add Text Frame To Doc 2

; nested exception is:

          org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.

Using session : 3

Script success

: Script reported no errors

Session A: Save and Close Doc 1

Using session : 2

; nested exception is:

          org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.

Session B: Save and Close Doc 2

Using session : 3

Script success

: Script reported no errors

InDesign Server Output

Mon Jul  8 14:34:48 2013 INFO[javascript] Executing Script
Mon Jul  8 14:34:48 2013 INFO[server] Creating New Doc 1
Mon Jul  8 14:37:53 2013 INFO[javascript] Executing Script
Mon Jul  8 14:37:53 2013 INFO[server] Creating New Doc 2

SOAP 1.1 fault: SOAP-ENV:Server [no subcode]

"Client opened session with ID 1 but the SOAP header targets session with ID 2!"

Detail: None

Mon Jul  8 14:37:54 2013 INFO[javascript] Executing Script
Mon Jul  8 14:37:54 2013 INFO[server] Add Text Frame To Doc 2

SOAP 1.1 fault: SOAP-ENV:Server [no subcode]

"Client opened session with ID 1 but the SOAP header targets session with ID 2!"

Detail: None

Mon Jul  8 14:37:54 2013 INFO[javascript] Executing Script
Mon Jul  8 14:37:54 2013 INFO[server] Save and Close Doc 2

Do you have any clue about this, any input is highly appreciated.

Thanks And Best Regards,

Dinesh.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 08, 2013 Jul 08, 2013

Copy link to clipboard

Copied

Hi Dinesh,

I must admit I didn't tried the example, I just got inspiration from the SampleClient.java code in order to write my own mutlithread code...

But after a quick look, it seems that the problem is because a script tries to refer to a document created in another thread.

I think the problem is because all scripts in the example (addtextFrame1, addtextFrame2, saveclose1, saveclose2) refer to app.documents[0].

But app.documents[0] is created in thread 1...

Try to change to app.documents[1] for the scripts addtextFrame2 and saveclose2.

In general, it is your responsibility to verify that you access the proper document, I would advise sending the document name as a script argument to be sure, and never use app.documents

I hope that will solve your problem,

/Martin

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 11, 2013 Jul 11, 2013

Copy link to clipboard

Copied

Hi Martin,

Thanks for the reply and explanation. However I am still unable to run this. It created the session 2 but it took about 3-5 min to create the session 3. I am thinking why it takes such a time to create the session 3. Any hint for this ?

Thanks for your help too.

Best Regards,

Dinesh.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 25, 2013 Mar 25, 2013

Copy link to clipboard

Copied

Hi,

I'm not able to use session with ID server.

I use php and SOAP.

I call BeginSession, RunScript and EndSession, but

it seems to me that IDS does not accept any SOAP request until EndSession is executed.

The script runs for about 4 minutes so we want to exec more scripts in parallel.

I try to copy the SOAP xml and send it with telnet, but it is the same.

If we launch IDS on 4 ports (12345, 12346, ...) we can execute 1 script on each port.

Is there a tutorial about sessions with IDS?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 05, 2013 Jul 05, 2013

Copy link to clipboard

Copied

Hi,

I have a related question, I don't think i should start a new thread for it.

I have expanded the C sharp SOAP example to start a few scripts simultaneously. But it appears like it isn't working.

My first change was to start every script from a different thread

                    Parallel.ForEach<Script>(scripts, script =>

                        {

                            Console.WriteLine("Starting script '" + script.ToString() + "' on thread: " + Thread.CurrentThread.ManagedThreadId.ToString());

                            script.Run(proxy);

                        });

This starts all scripts but it seems that they don't get executed at the same time.

I then changed the RunScript in script.cs to RunScriptAsync (proxy.RunScriptAsync(mParams);)

this however doesn't seem to actually execute the scripts.

Can anyone point me in the right direction?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jan 15, 2019 Jan 15, 2019

Copy link to clipboard

Copied

LATEST

For anyone finding this later, after some testing and capturing the packets with wireshark it appears that the client's tcp source port is what the InDesign server uses to identify separate clients and you can only have one InDesign session per client tcp source port used to connect to the server.

Most libraries used for soap web service access will reuse tcp sessions but in this case that causes the indesign server to think it is the same client and gives messages like "This call is already part of a session!" or "This call is not part of a session!" depending on what your doing.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines