Usage of QMUX

1,501 views
Skip to first unread message

venkat

unread,
May 2, 2011, 2:39:16 AM5/2/11
to jPOS Users
Hi,

I am trying to send ISO requests to Host Server with out using Q2
class. I could able to send messages using ISOChannel, but this way
not support the ResponseListener. So I have seen JPOS api that QMUX
has api methods to send ISO messages with configuration of
ResponseListener..... here is the problem for me, how to configure the
mux.xml and related configuration files with QMUX ?

I am new to JPOS.

Mark Salter

unread,
May 2, 2011, 4:44:21 AM5/2/11
to jpos-...@googlegroups.com
On 02/05/2011 07:39, venkat wrote:
> I am new to JPOS.
>
Do you have the programmers guide?

Please get it from jpos.org if you don't, it will answer many (if not
all) of your starting questions.

--
Mark

Venkateswarlu

unread,
May 2, 2011, 5:52:13 AM5/2/11
to jpos-...@googlegroups.com
Thanks for reply.
Yes, i have gone through the guide, and i trying to get QMUX object by following way.

QMUX mux = (QMUX)NameRegistrar.get("mux.agent-mux");

Bu it throwing exception that no Name was registered.

org.jpos.util.NameRegistrar$NotFoundException: agent-mux

So, i understood that i need to configure it in mux.xml.
I have created mux.xml and placed it in deploy folder.
Here is my question. How to map that mux.xml file to QMUX class.

Content of mux.xml
<mux class="org.jpos.q2.iso.QMUX" logger="agent_log" name="agent-mux">
    <in>agent-receive</in>
    <out>agent-send</out>
    <unhandled>agent-unhandled</unhandled>   
</mux>





--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage.
Please support jPOS, contact: sa...@jpos.org

You received this message because you are subscribed to the  "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users

Mark Salter

unread,
May 2, 2011, 6:27:53 AM5/2/11
to jpos-...@googlegroups.com
On 02/05/2011 10:52, Venkateswarlu wrote:
> Yes, i have gone through the guide, and i trying to get QMUX object by
> following way.
>
> QMUX mux = (QMUX)NameRegistrar.get("mux.agent-mux");
>
> Bu it throwing exception that no Name was registered.
>
> org.jpos.util.NameRegistrar$NotFoundException: agent-mux
> So, i understood that i need to configure it in mux.xml.
Yes you need a file to contain the definition of the QMUX added tot the
deploy folder so that jpos-ee will make a deploy it and it will be
available.

> I have created mux.xml and placed it in deploy folder.

And do you see messages indicating that the mux.xml file has been picked
up and deployed?

> Here is my question. *How to map that mux.xml file to QMUX class.*


>
> Content of mux.xml
> <mux class="org.jpos.q2.iso.QMUX" logger="agent_log" name="agent-mux">
> <in>agent-receive</in>
> <out>agent-send</out>
> <unhandled>agent-unhandled</unhandled>
> </mux>

The mapping is done for you in indicating :-

<mux class="org.jpos.q2.iso.QMUX"

do you want to use a different class?

Please first make sure your deployment is being picked up and deployed.

--
Mark

Venkateswarlu

unread,
May 2, 2011, 7:17:38 AM5/2/11
to jpos-...@googlegroups.com
    Any other class which can send ISOMsg and should be configured  with ResponseListener if its not possible with QMUX class.

Please first make sure your deployment is being picked up and deployed.
No, I could not see any messages that picks up mux.xml and deployed..
I have created manually and placed under deploy\\AGENT folder.

Mark Salter

unread,
May 2, 2011, 7:50:19 AM5/2/11
to jpos-...@googlegroups.com
On 02/05/2011 12:17, Venkateswarlu wrote:

>>> Here is my question. *How to map that mux.xml file to QMUX class.*
>>>
>>> Content of mux.xml
>>> <mux class="org.jpos.q2.iso.QMUX" logger="agent_log" name="agent-mux">
>>> <in>agent-receive</in>
>>> <out>agent-send</out>
>>> <unhandled>agent-unhandled</unhandled>
>>> </mux>
>>
>> The mapping is done for you in indicating :-
>>
>> <mux class="org.jpos.q2.iso.QMUX"
>>
>> do you want to use a different class?
>>
> Any other class which can send ISOMsg and should be configured with
> ResponseListener if its not possible with QMUX class.
>

I think it's time for you to explain what you are trying to do, me
trying to guess and simply answering your questions doesn't seem to have
worked so far.

Please ask a smart question :-

http://www.catb.org/~esr/faqs/smart-questions.html#translations

and I hope we can move forward from there.
--
Mark

Venkateswarlu

unread,
May 2, 2011, 8:06:57 AM5/2/11
to jpos-...@googlegroups.com
I am trying to send ISOMsg with message type "0800" by using QMUX class to Host Server.
For this i have created ISOMsg object with keys. Here is the method i have written to send message.
      
  public void sendMessage(){

        QMUX mux = new QMUX();

        ISOMsg m0100 = new ISOMsg();
        m0100.setMTI("0800");
        m0100.set(11, "000000");
        m0100.set(41, "00000001");
        m0100.set(39, "00");
 
         mux.request(m0100, 1000, (ISOResponseListener) new ResponseListener(), null);
}


Here is the reason why i have selected QMUX class, I need to do some actions when response is received. I can make use of ISOResponseListener with QMUX method --> request(m0100, 1000, (ISOResponseListener) new ResponseListener(), null);



Thank You.
Venkat.

Mark

Mark Salter

unread,
May 2, 2011, 8:40:35 AM5/2/11
to jpos-...@googlegroups.com
On 02/05/2011 13:06, Venkateswarlu wrote:
> I am trying to send ISOMsg with message type "0800" by using QMUX class to
> Host Server.
The mux needs to know what to use to communicate with the server...

> For this i have created ISOMsg object with keys. Here is the method i have
> written to send message.
>
> public void sendMessage(){
>
> QMUX mux = new QMUX();

This mux has no config, and is not running (it needs a Thread) - check
the jpos programmers guide (again please?) you have?

>
> ISOMsg m0100 = new ISOMsg();
> m0100.setMTI("0800");
> m0100.set(11, "000000");
> m0100.set(41, "00000001");
> m0100.set(39, "00");
>
> mux.request(m0100, 1000, (ISOResponseListener) new
> ResponseListener(), null);
> }
>

What channel setup are you using to connect to your host server? Have
you picked and configured a Packager? Are you using jpos-ee?

>
> Here is the reason why i have selected QMUX class, I need to do some actions
> when response is received. I can make use of ISOResponseListener with QMUX
> method --> request(m0100, 1000, (ISOResponseListener) new
> ResponseListener(), null);
>

I don;t think you needs a ISOResponseListener to do any actions with the
response, since the call to mux.request() will return the response (or
null in case of timeout).

Perhaps you have got a little confused, read the guide again, search
this mailing list and the wider internet to get going.

--
Mark

Rasheeda Ka

unread,
May 27, 2015, 6:49:21 AM5/27/15
to jpos-...@googlegroups.com
Hi Mark,

I am also facing same problem.


Wanted to use QMUX class  as i prefer to send request asynchronously so that subsequent payment requests should not get stuck waiting for current request response  [Should not wait till Time out seconds also in worst case ) 

I am not using JPOS EE and dont have any deploy folder. So where should i keep mux.xml ?Went through Programmers guide and did not get any clue. Is QMUX always need JPOS EE ?


Thanks In Advance
Rasheeda

Alejandro Revilla

unread,
May 27, 2015, 10:03:03 AM5/27/15
to jPOS Users
In order to use QMUX, you need to use Q2, which needs a deploy directory.

Starting Q2 is very simple:

  Q2 q2 = new Q2();
  q2.start();




--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
 

 
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/d3fc0d79-979a-4eed-bba8-57a19821be68%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Rasheeda Ka

unread,
May 28, 2015, 8:17:15 AM5/28/15
to jpos-...@googlegroups.com
Hi Alejandro,

Thank you for your response. 

I understand QMUX need q2 to be started . But still i am not clear where can i define a deploy directory to keep mux xml

I am neither using any application server nor JposEE  for my application.It is a simple stand alone java  thread program which uses jpos.jar which is downloaded n kept under classpath.

My designed module should be able to  send payment request to bank server asynchronously  and response handler thread  should get response and process it.  

Thanks 
Rasheeda

chhil

unread,
May 28, 2015, 8:49:25 AM5/28/15
to jpos-...@googlegroups.com

See section 7.1.1. Command line options.

As a standalone app you would need to use ISOMux and I believe it does not have the capability to do asynchronous. This was the old way of doing things on a very old version of jpos.

You should choose the q2 approach, its easier and you will get better support on it here.

-chhil

Mark Salter

unread,
May 29, 2015, 1:20:27 AM5/29/15
to jpos-...@googlegroups.com
On 28/05/15 13:49, chhil wrote:
> You should choose the q2 approach


Agree and if you had looked at the code or documentation, you might have
seen that you can also :-

Q2 q2 = new Q2("your deploy folder name");
q2.start();

--
Mark

Rasheeda Ka

unread,
Jun 2, 2015, 5:56:38 AM6/2/15
to jpos-...@googlegroups.com
Hi Chhil and Mark,

As you suggested , went through http://jpos.org/doc/proguide-draft.pdf and done q2 setup by downloading jPOS-2_0_0.tar.gz.

And i could  see jpos directory structure. [Os is Linux ]

1.  Started q2 using command bin/q2 and received below output.

<log realm="Q2.system" at="Tue Jun 02 14:58:00.616 IST 2015" lifespan="755ms">
  <info>
    Q2 started, deployDir=/opt/wmcp/javLib/jposQ2/jPOS-2_0_0/jpos/build/install/jpos/deploy

    jPOS 2.0.0 unknown/unknown (2015-05-29 18:12:36 IST)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

jPOS Community Edition, licensed under GNU AGPL v3.0.
This software is probably not suitable for commercial use.
Please see http://jpos.org/license for details.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iQEcBAEBAgAGBQJMolHDAAoJEOQyeO71nYtFv74H/3OgehDGEy1VXp2U3/GcAobg
HH2eZjPUz53r38ARPiU3pzm9LwDa3WZgJJaa/b9VrJwKvbPwe9+0kY3gScDE1skT
ladHt+KHHmGQArEutkzHlpZa73RbroFEIa1qmN6MaDEHGoxZqDh0Sv2cpvOaVYGO
St8ZaddLBPC17bSjAPWo9sWbvL7FgPFOHhnPmbeux8SLtnfWxXWsgo5hLBanKmO1
1z+I/w/6DL6ZYZU6bAJUk+eyVVImJqw0x3IEElI07Nh9MC6BA4iJ77ejobj8HI2r
q9ulRPEqH9NR79619lNKVUkE206dVlXo7xHmJS1QZy5v/GT66xBxyDVfTduPFXk=
=oP+v
-----END PGP SIGNATURE-----

  </info>
</log>
<log realm="Q2.system" at="Tue Jun 02 14:58:00.653 IST 2015" lifespan="28ms">
  <info>
    deploy: /opt/wmcp/javLib/jposQ2/jPOS-2_0_0/jpos/build/install/jpos/deploy/10_xxx_channel.xml
  </info>
</log>
<log realm="Q2.system" at="Tue Jun 02 14:58:00.679 IST 2015" lifespan="25ms">
  <info>
    deploy: /opt/wmcp/javLib/jposQ2/jPOS-2_0_0/jpos/build/install/jpos/deploy/20_xxx_mux.xml
  </info>
</log>
<log realm="Q2.system" at="Tue Jun 02 14:58:00.690 IST 2015" lifespan="9ms">
  <info>
    deploy: /opt/wmcp/javLib/jposQ2/jPOS-2_0_0/jpos/build/install/jpos/deploy/99_sysmon.xml
  </info>
</log>
<log realm="org.jpos.q2.qbean.SystemMonitor" at="Tue Jun 02 14:58:00.824 IST 2015">
  <info>
    Starting SystemMonitor
  </info>
</log>
<log realm="org.jpos.q2.qbean.SystemMonitor" at="Tue Jun 02 14:58:00.826 IST 2015">
  <info>
               OS: Linux
             host: lab118.tayanasoft.com/10.0.3.118
          version: 2.0.0 (unknown)
         instance: 4c73a2d7-1ae3-45a6-98ad-853a7560212c
           uptime: 00:00:01.308
       processors: 8
           drift : 0
    memory(t/u/f): 59/19/39
          threads: 7
            Thread[Reference Handler,10,system]
            Thread[Finalizer,8,system]
            Thread[Signal Dispatcher,9,system]
            Thread[RMI TCP Accept-0,5,system]
            Thread[Q2-4c73a2d7-1ae3-45a6-98ad-853a7560212c,5,main]
            Thread[DestroyJavaVM,5,main]
            Thread[pool-1-thread-1,5,main]
            Thread[Timer-0,5,main]
            Thread[channel-sender-mcps-channel-send,5,main]
            Thread[Thread-4,5,main]
            Thread[SystemMonitor,5,main]
         encoding: UTF-8
    name-registrar:
      channel.your-channel: org.jpos.iso.channel.ASCIIChannel
      logger.Q2: org.jpos.util.Logger
      logger.Q2.buffered: org.jpos.util.BufferedLogListener
      mux.mcpsmux: org.jpos.q2.iso.QMUX
        tx=0, rx=0, tx_expired=0, tx_pending=0, rx_expired=0, rx_pending=0, rx_unhandled=0, rx_forwarded=0, connected=false, last=0
      your-channel: org.jpos.q2.iso.ChannelAdaptor
        tx=0, rx=0, connects=1, last=0
      tspace:default: org.jpos.space.TSpace
        <key count='1'>your-channel.ready</key>
        <keycount>0</keycount>
        <gcinfo>0,0</gcinfo>

      logger.: org.jpos.util.Logger
  </info>
</log>

2. Jpos client module .

    try {
     QMUX mux = (QMUX) NameRegistrar.get ("mux.mcpsmux");
     
     ISOMsg response=mux.request(isoMsg,30000);

    }
catch(NameRegistrar.NotFoundException e){   System.out.println("::::"+e); }

3. Started jpos test server [Which listen to port 4567 ]  on same server.

4. Started Jpos client module - Received exception as ::::org.jpos.util.NameRegistrar$NotFoundException: mux.mcpsmux

5. Given below  20_xxx_mux.xml used

<mux class="org.jpos.q2.iso.QMUX" logger="Q2" name="mcpsmux">
 <key>11</key>
<in>mcps-channel-receive</in>
<out>mcps-channel-send</out>
<ready>mcps-channel.ready</ready>
<unhandled>mcpsunhandledqueue</unhandled>
</mux>


Please guide me what can be wrong here.


As Mark suggested , tried starting Q2 from code . But In that case i could see , below exception on running client.

org.jpos.core.ConfigurationException: error opening file: log/q2.log (java.io.FileNotFoundException: log/q2.log (No such file or directory))
.
.
<log realm="org.jpos.q2.qbean.SystemMonitor" at="Tue Jun 02 15:22:11 IST 2015.729">
  <info>
    <revision>c12732c</revision>
    <instance>3e78f2ce-c276-4c13-be18-b16b2ade8d90</instance>
    <uptime>00:00:00.372</uptime>
    <processors>8</processors>
    <memory>
       freeMemory=45369120
      totalMemory=78249984
      inUseMemory=32880864
    </memory>
    <threads>
            delay=0 ms
          threads=6
            Thread[Reference Handler,10,system]
            Thread[Finalizer,8,system]
            Thread[Signal Dispatcher,9,system]
            Thread[main,5,main]
            Thread[Q2-3e78f2ce-c276-4c13-be18-b16b2ade8d90,5,main]
            Thread[Timer-0,5,main]
            Thread[channel-sender-mcps-channel-send,5,main]
            Thread[channel-receiver-mcps-channel-receive,5,main]
            Thread[SystemMonitor,5,main]
    </threads>
    --- name-registrar ---
      channel.your-channel: org.jpos.iso.channel.ASCIIChannel
      your-channel: org.jpos.q2.iso.ChannelAdaptor
        tx=0, rx=0, connects=1, last=0
      logger.: org.jpos.util.Logger
      tspace:default: org.jpos.space.TSpace
        <key count='1'>your-channel.ready</key>
        <keycount>0</keycount>
        <gcinfo>0,0</gcinfo>

      logger.Q2.buffered: org.jpos.util.BufferedLogListener
      logger.Q2: org.jpos.util.Logger
      mux.mcpsmux: org.jpos.q2.iso.QMUX
        tx=0, rx=0, tx_expired=0, tx_pending=0, rx_expired=0, rx_pending=0, rx_unhandled=0, rx_forwarded=0, connected=false, last=0
  </info>
</log>


 Thanks
Rasheeda

chhil

unread,
Jun 2, 2015, 6:38:11 AM6/2/15
to jpos-...@googlegroups.com

You need the files to get deployed before your client can access items in the name registrar. 

I suggest writing a qbean with its deploy file that does your mux request (as a test)
This deploy file should have a prefix number greater than that of your channel and mux.

Or you can poll your name registrar till the mux is found.
Use the name registrars static method to dump it's contents to get an idea of what's available for use.

You should also start the server with a deploy file and let jpos pick these up in order and run the beans that will start a server and listen on a port.

Basically do not have a standalone class that runs using its main for your servers and clients.

-chhil

--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
 
Join us in IRC at http://webchat.freenode.net/?channels=jpos
 
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.

Mark Salter

unread,
Jun 5, 2015, 2:24:08 AM6/5/15
to jpos-...@googlegroups.com
On 02/06/15 10:56, Rasheeda Ka wrote:
> 2. Jpos client module .
>
> try {
> QMUX mux = (QMUX) NameRegistrar.get ("mux.mcpsmux");
>
> ISOMsg response=mux.request(isoMsg,30000);
>
> }
Where / how is this code running? In the same or a different VM?

> As Mark suggested , tried starting Q2 from code . But In that case i
> could see , below exception on running client.
>
> org.jpos.core.ConfigurationException: error opening file: log/q2.log
> (java.io.FileNotFoundException: log/q2.log (No such file or directory))
Did you try creating the directory?

--
Mark

Rasheeda Ka

unread,
Jun 26, 2015, 2:59:28 AM6/26/15
to jpos-...@googlegroups.com
Hi,

Sorry for late response. Mark , i had kept code outside Q2 directory structure. so i assume this is the reason that i got above exception.

I have done JPOS EE Setup using standard download  and i am able to start Q2 successfully .My development environment is Os : Linux [ No git client is installed] , Jdk :1.7 

 Can you please give me a hint where can i keep my source code test bean  under Q2 Directory structure. 

I Have tried with below options 
1. jposs  templates . As git  client is not installed , build failed with error  " Error listing versions of com.github.jnr:jffi:[1.2.1, 1.3.0) using class org.gradle.api.internal.artifacts.repositories.resolver.MavenVersionLister$1. Will attempt an alternate way to list versions. This behaviour has been deprecated and is scheduled to be removed in Gradle 2.0

Is there any other way other than git ?  

Mark Salter

unread,
Jun 28, 2015, 6:25:01 AM6/28/15
to jpos-...@googlegroups.com
On 26/06/15 07:59, Rasheeda Ka wrote:

> i had kept code outside Q2 directory
> structure. so i assume this is the reason that i got above exception.
I would think not, but...

> Can you please give me a hint where can i keep my source code test bean
> under Q2 Directory structure.
modules/testQBean/src...

>
> I Have tried with below options
> 1. jposs templates . As git client is not installed , build failed
> with error " Error listing versions of com.github.jnr:jffi:[1.2.1,
> 1.3.0) using class
> org.gradle.api.internal.artifacts.repositories.resolver.MavenVersionLister$1.
> Will attempt an alternate way to list versions. This behaviour has been
> deprecated and is scheduled to be removed in Gradle 2.0
No git client - you are using gradlew?

There was a recent update to the jpos-template - regarding gradle 2.4 -
probably worth getting a fresh copy.

>
> Is there any other way other than git ?
You can download a zip file from github, extract and use that, but why
not get a git client?
I wonder if you meant gradle rather than git?

Time to state what you have, perhaps what you are doing and full detail
of what is wrong?

--
Mark

Rasheeda Ka

unread,
Dec 21, 2015, 3:30:28 AM12/21/15
to jPOS Users
Hi Mark ,

Sorry . I could not continue with Q2 Approach as we had time constraints for doing R&D on it.
Have used below code for sending ISO request and getting response .
============================================
public ISOMsg sendISOMsg(ISOMsg IsoequestMsg)
       {
            logUtils.info("sendISOMsg=="+IsoequestMsg);
            ISOMsg response = null;
            ISOMUX mux = null;
               try
               {
 
                    mux = new ISOMUX(channel);
                    new Thread (mux).start();
                    ISORequest r = new ISORequest(IsoequestMsg);
                    mux.queue (r);
                    //logUtils.info("MESSAGE IN QUEUE");
                   response = r.getResponse(35000);
                    logUtils.info("Response is :"+response);
                    if(response!=null)
                    {
                            this.printISOMsg(response);
                    }
               }
               catch(Exception e)
               {
                    logUtils.warn("Exception while sending ISO:"+e);
                    response = null;
               }
               finally
               {
                     logUtils.info("FINALLY");
                     if(mux.isConnected())
                     {
                            if(response==null)
                            {
                                    mux.setConnect(false);
                                    logUtils.info("Response Null.Controlled Terminate");
                                   mux.terminate();
                            }
                            else
                            {
                                    logUtils.info("Connected.Controlled Terminate");
                                    mux.terminate();
                            }
                     }
                    else
                    {
                           logUtils.info("Not Connected.Immediate Terminate");
                           mux.terminate(2000);
                    }
                     logUtils.info("Returng respnse :"+response);
                     return response;
               }
       }

The above one is working fine if ISO Server [ Which is developed by another vendor . We acts as ISO client ] is giving response properly.
But sometime , it is not getting response and It returns null after 35 second [As Timeout is set as 35 seconds ] .

After receiving Response , while Terminating ISOMUX thread , code is getting stuck on terminate() method which in turn make the whole module stuck.

Is there any other way to terminate thread .. ? What can be wrong here ? Is something that we need to check with Bank ISO Server ?

Please give me a quick response if possible as it very urgent.

Thanks & Regards
Rasheeda

Alejandro Revilla

unread,
Dec 21, 2015, 8:26:16 AM12/21/15
to jPOS Users
Starting a MUX per message is really overkill and plain wrong.

Please take a look at jPOS-EE's clientsimulator and serversimulator in order to see how the different components fit together.

You can read about them here: http://jpos.org/doc/jPOS-EE.pdf



--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
 
Join us in IRC at http://webchat.freenode.net/?channels=jpos
 
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages