-
1. Re: Hit Blacktie servers by webservice
tomjenkinson Sep 15, 2015 6:20 AM (in response to joicejoy)Unfortunately not. Are you trying to coordinate updates to multiple XATMI services in one transaction from the same webclient?
I.e. webclient begin transaction
webclient call XATMI1
webclient call XATMI2
webclient commit
or just webclient begin
webclient call XATMI1
XATMI1 call XATMI2
webclient commit?
If its the former, there is likely some functionality not available to support this on BlackTie side as it requires bridging XTS, if its the latter the setup would be.
1. Create a normal webservice with an API
2. Create XATMI service
3. Deploy webservice on WildFly
4. Use jatmibroker api in normal webservice to begin/commit a transaction (if desirable) and call XATMI C services
Its a very interesting and advanced topic - thanks for your continued interest in Narayana!
-
2. Re: Hit Blacktie servers by webservice
joicejoy Sep 15, 2015 6:42 AM (in response to tomjenkinson)In Tuxedo, we have the facility to mark the beginning of a transaction by calling tpbegin() and end the transaction by calling tpcommit()
Every api call (tpcall) in between is part of that transaction and managed by Tuxedo especially if failure occurs and rollback is needed.
Can you confirm if this is possible.
-
3. Re: Hit Blacktie servers by webservice
tomjenkinson Sep 15, 2015 8:22 AM (in response to joicejoy)In BlackTie we use the APIs defined in the open standard tx.h and xatmi.h so that is tx_begin and tx_commit. Even then, the transaction can't be propagated to a webservice as we don't have the bridging for that in place (though we could add it as we do have bridging, just not for BlackTie).
e.g.
tx_begin //narayana/tx.h at master · jbosstm/narayana · GitHub
tpcall("A"... //narayana/xatmi.h at master · jbosstm/narayana · GitHub
tpcall("B"...
tx_commit()
-
4. Re: Hit Blacktie servers by webservice
joicejoy Sep 15, 2015 9:14 AM (in response to tomjenkinson)Which type of clients for Blacktie support this feature currently.
-
5. Re: Hit Blacktie servers by webservice
tomjenkinson Sep 15, 2015 10:43 AM (in response to joicejoy)Java (inside WildFly) and C (standalone). Transaction is propagated on pertinent tp* call.
-
6. Re: Hit Blacktie servers by webservice
joicejoy Sep 16, 2015 1:16 AM (in response to tomjenkinson)Are there any quickstarts for Java (inside Wildfly) client API calls.
Also if we use C(standalone) clients, how the requests routed to different servers.
In Tuxedo we have a BBL process which routes the requests. In addition to this, it provides addtional features like Content Based Routing and Load Balancing etc.
Can we have multiple instances of the same server. If yes, how is load balancing handled. Is it through Wildfly?
Could you explain the role of Wildfly in this Blacktie based solution.
-
7. Re: Hit Blacktie servers by webservice
tomjenkinson Sep 16, 2015 5:53 AM (in response to joicejoy)Joice Joy wrote:
Are there any quickstarts for Java (inside Wildfly) client API calls.
https://github.com/jbosstm/quickstart/tree/master/blacktie/jatmibroker-xatmi/mdb-xatmi-service
Joice Joy wrote:
Also if we use C(standalone) clients, how the requests routed to different servers.
In Tuxedo we have a BBL process which routes the requests. In addition to this, it provides addtional features like Content Based Routing and Load Balancing etc.
Can we have multiple instances of the same server. If yes, how is load balancing handled. Is it through Wildfly?
Could you explain the role of Wildfly in this Blacktie based solution.
WildFly hosts the message broker which is where the load balancing is done. You can run multiple copies of the same server. You can see here that two copies of fooapp server are ran: https://github.com/jbosstm/quickstart/blob/master/blacktie/xatmi/fooapp/btconfig.xml#L28
Loadbalancing is done via the message broker.
WildFly provides the actual transaction manager, plus the message broker for load balancing.
-
8. Re: Hit Blacktie servers by webservice
joicejoy Sep 23, 2015 2:02 AM (in response to tomjenkinson)Thanks for the reply.
I see the quickstart still uses hornetq. Do you think it will still work?
-
9. Re: Hit Blacktie servers by webservice
tomjenkinson Sep 23, 2015 5:59 AM (in response to joicejoy)Yes, it is tested in CI. It might say hornetq somewhere (please raise a Jira or let us know on here) but it is using Artemis.
-
11. Re: Hit Blacktie servers by webservice
joicejoy Sep 24, 2015 7:55 AM (in response to zhfeng)Thanks for the reply.
I have another question regarding service names. In Tuxedo the advertised service names are mapped to actual function names which will be called.
Tuxedo limits the names of the advertised services to 15 characters whereas the actual function names which are called have a limit of 127.
I see in Blacktie the name of the service advertised is the name of the function that is called.
So what are the limits on service names in Blacktie.
-
12. Re: Hit Blacktie servers by webservice
tomjenkinson Sep 24, 2015 9:12 AM (in response to joicejoy)Hi,
The name of the service name is limited by the specification to 128: https://github.com/jbosstm/narayana/blob/master/blacktie/xatmi/src/main/include/xatmi.h#L43
Hope it helps,
Tom
-
13. Re: Hit Blacktie servers by webservice
joicejoy Oct 9, 2015 9:52 PM (in response to tomjenkinson)The above issue is resolved. I am now able to hit Blacktie services.
I am getting an error when I try to hit NBFEXAMPLE server from the mdb client:
2015-10-09 03:57:20,913 [0x7f6addd21700] WARN (HybridSocketEndpointQueue:397 ) - connect to localhost:12345 failed
The server is trying to connect to the above client IP:port. But localhost is not present in any btconfig.xml. So not sure where this is coming from.
Server btconfig.xml
<ENVIRONMENT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.jboss.org/blacktie">
<DOMAIN>fooapp</DOMAIN>
<MACHINES>
<MACHINE id="nbfserv1" hostname="${HOSTNAME}"
pathToExecutable="./server"
workingDirectory="."
serverId="1"
argLine =" -p 12346"/>
</MACHINES>
<SERVERS>
<SERVER name='nbfserv'>
<MACHINE-REF id="nbfserv1" />
<SERVICE_NAMES>
<SERVICE name='NBFEXAMPLE'/>
</SERVICE_NAMES>
</SERVER>
</SERVERS>
<XA_RESOURCES>
<XA_RESOURCE configuration="linux">
<XA_RESOURCE_MGR_ID>201</XA_RESOURCE_MGR_ID>
<XA_RESOURCE_NAME>Oracle_XA</XA_RESOURCE_NAME>
<XA_OPEN_STRING>Oracle_XA+Acc=P/roadmap3/arbor123+SesTm=60+DbgFl=15+SqlNet=RDCO1108+DB=RDCO1108+LogDir=.</XA_OPEN_STRING>
<XA_CLOSE_STRING></XA_CLOSE_STRING>
<XA_SWITCH>xaosw</XA_SWITCH>
<XA_LIB_NAME>${ORACLE_HOME}/lib/libclntsh.so</XA_LIB_NAME>
</XA_RESOURCE>
</XA_RESOURCES>
<ORB OPT="-ORBInitRef NameService=corbaloc::${JBOSSAS_IP_ADDR}:3528/NameService -ORBListenEndpoints iiop://${JBOSSAS_IP_ADDR}:0"
TRANS_FACTORY_ID="TransactionManagerService.OTS" />
<TXN_CFG
MGR_URL="http://${JBOSSAS_IP_ADDR}:8080/rest-at-coordinator/tx/transaction-manager"
RES_EP="127.0.0.1:8888" />
<SOCKETSERVER PORT="0" />
<MQ HOST="${JBOSSAS_IP_ADDR}" PORT="61613" USER="guest" PASSWORD="password1@"
RECEIVE_TIMEOUT="10" TIME_TO_LIVE="40" />
</ENVIRONMENT>
-
14. Re: Hit Blacktie servers by webservice
zhfeng Oct 10, 2015 3:07 AM (in response to joicejoy)I think you should config the HOST attribute in the mdb client btconfig.xml just like
<SOCKETSERVER HOST='<your client ip address>' PORT=0>
PORT 0 means a random port number and you also could specific it. If you have a fire wall on the client, I think you should specific a port number and allow it access by the incoming connections.