A system for supporting a complex message header in a transactional middleware machine environment, comprising: a first type of transactional server that uses a first type of message queue for communicating with a transactional client using Inter-Process Communication, IPC, and a second type of transactional server that uses a second type of message queue for communicating with the transactional client using Remote Direct Memory Access, RDMA; wherein a message (104, 105) comprises the complex message header (106, 107), wherein the complex message header includes a first data structure (108, 109) that stores address information for accessing the transactional client using the first type of message queue and a second data structure (110, 111) that stores address information for accessing the transactional client using the second type of message queue, wherein the first type of transactional server is operable to check only the first data structure in the complex message header to obtain the address information for communicating with the transactional client using the first message queue and wherein the second type of transactional server is operable to obtain a key from the first data structure in the complex message header, and to use the key to obtain the address information from the second data structure in the complex message header for communicating with the transactional client using the second message queue. a first type of transactional server that uses a first type of message queue for communicating with a transactional client using Inter-Process Communication, IPC, and a second type of transactional server that uses a second type of message queue for communicating with the transactional client using Remote Direct Memory Access, RDMA; wherein a message (104, 105) comprises the complex message header (106, 107), wherein the complex message header includes a first data structure (108, 109) that stores address information for accessing the transactional client using the first type of message queue and a second data structure (110, 111) that stores address information for accessing the transactional client using the second type of message queue, a first data structure (108, 109) that stores address information for accessing the transactional client using the first type of message queue and a second data structure (110, 111) that stores address information for accessing the transactional client using the second type of message queue, wherein the first type of transactional server is operable to check only the first data structure in the complex message header to obtain the address information for communicating with the transactional client using the first message queue and wherein the second type of transactional server is operable to obtain a key from the first data structure in the complex message header, and to use the key to obtain the address information from the second data structure in the complex message header for communicating with the transactional client using the second message queue. to obtain a key from the first data structure in the complex message header, and to use the key to obtain the address information from the second data structure in the complex message header for communicating with the transactional client using the second message queue.