Hi Guys,

Can you please remove the users-owner@ from this conversation? There is no
need to continue to include it.

Bruce

On Thu, Feb 1, 2018 at 7:23 AM, Gupta Bharat <bharat.gu...@scania.com>
wrote:

> I don't wish to add headers in the message I pasted. This message I am
> getting from user and it is content. Even the tag header is part of
> content. But when I route the message from Active MQ to IBM MQ certain
> attributes like destination topic name and message id need to be added.
>
> Also I am using MQTT client to publish a message on ActiveMQ specifying
> the topic name and message. I need to add that topic name as destination
> and also want to remove JWTtoken from message.
>
> Publication:
> Topic: Demo
> Message: {"header":{"messageId":"fcbef565-18ea-429a-836f-
> 7e24d9b53743","jwtToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.
> eyJ1bmlxdWVfbmFtZSI6IndpaW5pa3B2dCIsInN1YiI6IndpaW5pa3B2dCIs
> ImtpZCI6ImMxMzFhMWI0LWU0YWUtNGUwNC1hMGYwLWViNzViYThjYTFjMyIs
> IkV4dGVybmFsU3RhZmZSZWZlcmVuY2UiOiJmZWNiMDQ1Ny05MmNhLTRmMDAt
> OTIwNC1lZjAwNTYzZDgxZGIiLCJFeHRlcm5hbEN1c3RvbWVyUmVmZXJlbmNl
> IjoiYTkxZWYzMTYtNTJhMi00ZWE0LTk3ZDMtNDI5MDhhMGNjYjQ3IiwiQWRB
> Y2NvdW50IjoibndpN2E0IiwiRnVuY3Rpb25hbFBlcm1pc3Npb25zIjoiNDkx
> MDA3IiwiVXNlclBlcm1pc3Npb25zIjpbIjI0NDUxMTQ3NTAiLCI5OTIiXSwi
> aXNzIjoiaHR0cHM6Ly9mbXNkZXZhdXRoLnNjYW5pYS5jb20vIiwiYXVkIjoi
> MmMxNzk2NzktN2VjMS00MGQxLTkxNjAtNjk3NjEyOTg0ZDg1IiwiZXhwIjox
> NTE1Njc5Njk4LCJuYmYiOjE1MTU2NzYwOTh9.Olt1zXeDA1sndO1d4M1y07uSBzj7Bx
> A6Plvmf8TCLfeQhh3-Fyx-wMIyHhXWSNFgI6tRDVL0heJftxATcGbe_
> 0u1nVp0vwnrTO7PuGuKzEhWYXFlGs83IasN7hIidOp1qP9hXzi3i_
> VKVNa0wILUsuBMza7nkPd7xuTgCqacuFDpBZowyt-V1PUvqyj2Gd50ADh_ouuazO3akN_
> xHCFENJGDXLx91ABuJbGGiUsPI16uDcxAzDmfeKgnwbF5Zs8dw3TE_
> LiiBCcICMKx81rp6L_RTkPuoe5Umv-Y2ihfcnDt1trp36TvpUsSa-
> TqtcvZntwkDBcCNKhoyEB5FokMxatK5xgnpjqpj1kwZmHqfzfsJwFDBHY9Cd
> 73UQpigmarLc7RgyWL3O_QZXxDeVP1vxO4V2NK1im3Jc0BjL4vs
> rcIqrWUn_v4pJCMQMFtSZ2hkg8Yw_VRnrvJToF4z9OJa_yDN__bIC5_
> Ezl4HvvJ6jTrkr1sqQTJKq4ipyx-4pG9Ns5KPZezjgEraBMENcAHzCcIpI
> vI53Bmu6aPneFgEjOAQaJ5Dgzu-Cr4fesjEgIyBVt2bHPGa-ztAA7pfop-3BXsVjwXPsbc_7-
> tQanCr_gANHtZXQYXvjxM14PFuZAjc-GERg9IkCokgRd3x8xYlNWhRtiCZ47k
> flNNwt1_QVo","correlId":"","initialMessageid":"fcbef565-
> 18ea-429a-836f-7e24d9b53743","environment":"st5","producerUTCTimestamp":
> 1515677099337,"contractId":"SCCO3822","producerVer":"1.0","messageType":"
> SendChatMessageInConversationMessage","appId":"fma","
> messageTypeVer":"1.0","receivers":[]},"body":{"conversationId":"2b575462-
> 97bd-4e9a-8ac4-6fec793c836a","chatMessageId":"098ee4e7-8976-
> 4c21-8f0a-521873fd6ac5","content":"grte","attachments":[]}}
>
>
> I need *Demo* to be added in headers and remove jwtToken from message. I
> removed it. But what method I can use in ActiveMQ to publish it on Topic
> Demo instead of message with jwtToken value.
>
> I Hope I am able to explain you better :)
>
> Regards,
> Bharat Gupta
>
>
> -----Original Message-----
> From: tbai...@gmail.com [mailto:tbai...@gmail.com] On Behalf Of Tim Bain
> Sent: den 1 februari 2018 15:02
> To: ActiveMQ Users <users@activemq.apache.org>
> Cc: users-ow...@activemq.apache.org
> Subject: RE: ActiveMQ custom plugin
>
> Oh, and I missed your second question. I would expect that you could add
> headers similar to how the code you posted removed some. Does your question
> mean that you tried that and it didn't work? If so, how did it fail?
>
> Tim
>
> On Feb 1, 2018 6:59 AM, "Tim Bain" <tb...@alumni.duke.edu> wrote:
>
> > Bharat,
> >
> > Is this in 5.x, or did you switch to Artemis?
> >
> > Your code is operating on a message, but what called your code? We'd need
> > some context on how you got that message to know what you should do with
> it
> > next.
> >
> > Tim
> >
> > On Feb 1, 2018 5:01 AM, "Gupta Bharat" <bharat.gu...@scania.com> wrote:
> >
> >> Hello Tim,
> >>
> >> I am getting following message from client using MQTT
> >>
> >> {
> >>         "header": {
> >>                 "messageId": "fcbef565-18ea-429a-836f-7e24d9b53743",
> >>                 "jwtToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU
> >> zI1NiJ9.eyJ1bmlxdWVfbmFtZSI6IndpaW5pa3B2dCIsInN1YiI6IndpaW5p
> >> a3B2dCIsImtpZCI6ImMxMzFhMWI0LWU0YWUtNGUwNC1hMGYwLWViNzViYThj
> >> YTFjMyIsIkV4dGVybmFsU3RhZmZSZWZlcmVuY2UiOiJmZWNiMDQ1Ny05MmNh
> >> LTRmMDAtOTIwNC1lZjAwNTYzZDgxZGIiLCJFeHRlcm5hbEN1c3RvbWVyUmVm
> >> ZXJlbmNlIjoiYTkxZWYzMTYtNTJhMi00ZWE0LTk3ZDMtNDI5MDhhMGNjYjQ3
> >> IiwiQWRBY2NvdW50IjoibndpN2E0IiwiRnVuY3Rpb25hbFBlcm1pc3Npb25z
> >> IjoiNDkxMDA3IiwiVXNlclBlcm1pc3Npb25zIjpbIjI0NDUxMTQ3NTAiLCI5
> >> OTIiXSwiaXNzIjoiaHR0cHM6Ly9mbXNkZXZhdXRoLnNjYW5pYS5jb20vIiwi
> >> YXVkIjoiMmMxNzk2NzktN2VjMS00MGQxLTkxNjAtNjk3NjEyOTg0ZDg1Iiwi
> >> ZXhwIjoxNTE1Njc5Njk4LCJuYmYiOjE1MTU2NzYwOTh9.Olt1zXeDA1sndO1
> >> d4M1y07uSBzj7BxA6Plvmf8TCLfeQhh3-Fyx-wMIyHhXWSNFgI6tRDVL0heJ
> >> ftxATcGbe_0u1nVp0vwnrTO7PuGuKzEhWYXFlGs83IasN7hIidOp1qP9hXzi
> >> 3i_VKVNa0wILUsuBMza7nkPd7xuTgCqacuFDpBZowyt-
> >> V1PUvqyj2Gd50ADh_ouuazO3akN_xHCFENJGDXLx91ABuJbGGiUsPI16uDcx
> >> AzDmfeKgnwbF5Zs8dw3TE_LiiBCcICMKx81rp6L_RTkPuoe5Umv-Y2ihfcnD
> >> t1trp36TvpUsSa-TqtcvZntwkDBcCNKhoyEB5FokMxatK5xgnpjqpj1kwZmH
> >> qfzfsJwFDBHY9Cd73UQpigmarLc7RgyWL3O_QZXxDeVP1vxO4V2NK1im3Jc0
> >> BjL4vsrcIqrWUn_v4pJCMQMFtSZ2hkg8Yw_VRnrvJToF4
> >> z9OJa_yDN__bIC5_Ezl4HvvJ6jTrkr1sqQTJKq4ipyx-4pG9Ns5KPZezjgEr
> >> aBMENcAHzCcIpIvI53Bmu6aPneFgEjOAQaJ5Dgzu-Cr4fesjEgIyBVt2bHPG
> >> a-ztAA7pfop-3BXsVjwXPsbc_7-tQanCr_gANHtZXQYXvjxM14PFuZAjc-GE
> >> Rg9IkCokgRd3x8xYlNWhRtiCZ47kflNNwt1_QVo",
> >>                 "correlId": "",
> >>                 "initialMessageid": "fcbef565-18ea-429a-836f-7e24d
> >> 9b53743",
> >>                 "environment": "st5",
> >>                 "producerUTCTimestamp": 1515677099337,
> >>                 "contractId": "SCCO3822",
> >>                 "producerVer": "1.0",
> >>                 "messageType": "SendChatMessageInConversationMessage",
> >>                 "appId": "fma",
> >>                 "messageTypeVer": "1.0",
> >>                 "receivers": []
> >>         },
> >>         "body": {
> >>                 "conversationId": "2b575462-97bd-4e9a-8ac4-
> 6fec793c836a",
> >>                 "chatMessageId": "098ee4e7-8976-4c21-8f0a-
> 521873fd6ac5",
> >>                 "content": "grte",
> >>                 "attachments": []
> >>         }
> >> }
> >>
> >> I am validating the message by validating the jwt token. I don’t want
> >> jwtToken field in message once I have validate it and used following to
> >> remove it:
> >>
> >> for (JsonNode jsonNode : jsonNodeRoot) {
> >>            if (jsonNode instanceof ObjectNode) {
> >>                ObjectNode o = (ObjectNode) jsonNode;
> >>                o.remove("jwtToken");
> >>
> >>            }
> >>        }
> >>
> >> But how to publish a message on topic once I have done the following
> >> checks on it? What method I can use here?
> >>
> >> Also I wish to add certain attributes in the message header and then
> >> publish on the topic how I can do that also?
> >>
> >> Thank You in Advance
> >>
> >> Regards,
> >> Bharat Gupta
> >>
> >>
> >> -----Original Message-----
> >> From: tbai...@gmail.com [mailto:tbai...@gmail.com] On Behalf Of Tim
> Bain
> >> Sent: den 2 januari 2018 06:27
> >> To: ActiveMQ Users <users@activemq.apache.org>
> >> Cc: users-ow...@activemq.apache.org
> >> Subject: Re: ActiveMQ custom plugin
> >>
> >> I spent a little time this evening looking through the ActiveMQ 5.x code
> >> and didn't find an obvious way to hook into the MQTT-specific pieces, so
> >> switching to Artemis may be your best bet.
> >>
> >> Tim
> >>
> >> On Wed, Dec 13, 2017 at 7:02 AM, Tim Bain <tb...@alumni.duke.edu>
> wrote:
> >>
> >> > Bharat,
> >> >
> >> > I hadn't caught that this question was about making the connection
> >> rather
> >> > vs. the first question about sending messages across it; thanks for
> >> helping
> >> > me understand your question.
> >> >
> >> > As far as I know, the interception capabilities of 5.x apply only to
> the
> >> > core broker using the interface you used in the earlier messages in
> this
> >> > thread, but not to the code that translates non-OpenWire protocols
> such
> >> as
> >> > MQTT into OpenWire. I'll need to spend some time digging through the
> >> code
> >> > to make sure there isn't an MQTT plugin capability I don't know about,
> >> and
> >> > I probably won't get a chance to do that until the weekend. But
> unless I
> >> > find something unexpected when I do that digging, what you want may
> not
> >> be
> >> > possible with ActiveMQ 5.x. If as you say Artemis allows you to do
> >> > everything you're trying to do, then switching to it may be a good
> >> option.
> >> >
> >> > Tim
> >> >
> >> > On Dec 12, 2017 8:07 AM, "Gupta Bharat" <bharat.gu...@scania.com>
> >> wrote:
> >> >
> >> >> Yes the question I asked here is not answered earlier. In previous
> >> >> threads/mail focus was on when client was publishing a message on
> >> topic the
> >> >> activemq.send method was called to intercept the message before it
> >> actually
> >> >> published on topic.
> >> >>
> >> >> Here I am majorly focusing on intercepting mqtt connections, which
> >> means
> >> >> intercepting the client request to activemq and Call my plugin there.
> >> So
> >> >> which method of activemq can be used here?
> >> >>
> >> >> As I went thru many solutions over internet and see Artemis as an
> >> option.
> >> >>
> >> >> I hope I am able to put my point clear now. :) please let me know if
> >> more
> >> >> info is needed from my end.
> >> >>
> >> >>
> >> >>
> >> >> Sent from my iPhone
> >> >>
> >> >> On 12 Dec 2017, at 15:00, Tim Bain <tb...@alumni.duke.edu<mailto:
> >> >> tb...@alumni.duke.edu>> wrote:
> >> >>
> >> >> Is there some aspect of your question that's not answered by the
> first
> >> >> 12(!) emails in the thread? I'm not clear why you're asking what
> >> appears
> >> >> to
> >> >> be the same question again. If there's some new aspect of the
> question
> >> or
> >> >> something that wasn't previously answered, please highlight what it
> is.
> >> >>
> >> >> And no, I don't believe that Artemis is required to do what you're
> >> trying
> >> >> to do. It might be equally possible to do in Artemis compared to
> doing
> >> in
> >> >> 5.x (I don't know Artemis well enough to comment on whether this can
> be
> >> >> done in Artemis), but you definitely don't "have to use Artemis here
> to
> >> >> achieve this."
> >> >>
> >> >> Tim
> >> >>
> >> >> On Dec 12, 2017 1:31 AM, "Gupta Bharat" <bharat.gu...@scania.com
> <mailt
> >> o:
> >> >> bharat.gu...@scania.com>> wrote:
> >> >>
> >> >> hello again,
> >> >>
> >> >> I am asking my question here again if you can possibly help me with a
> >> >> method.
> >> >>
> >> >> 1. Need to intercept the Incoming connections from MQTT clients.
> >> >> User is connecting to activemq broker by hitting on url and sending a
> >> >> TOKEN [(hostname:port) + token]
> >> >>
> >> >> How can we intercept the connections and validate the token sent by
> >> mqtt
> >> >> client?
> >> >>
> >> >> I have my own custom plugin that will validate the token. Just Need
> to
> >> >> know method on which we can call that Plugin.
> >> >>
> >> >> Also do we have to use Artemis here to achieve this?
> >> >>
> >> >> Thanks In Advance
> >> >>
> >> >> Regards,
> >> >> Bharat Gupta
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >> Mobile: +46700869007, +91-9718483802
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>
> >> >>
> >> >> -----Original Message-----
> >> >> From: tbai...@gmail.com<mailto:tbai...@gmail.com> [mailto:
> >> >> tbai...@gmail.com] On Behalf Of Tim Bain
> >> >> Sent: Tuesday, December 5, 2017 7:29 PM
> >> >> To: ActiveMQ Users <users@activemq.apache.org<mailto:
> >> >> users@activemq.apache.org>>
> >> >> Cc: users-ow...@activemq.apache.org<mailto:users-owner@activemq.
> >> >> apache.org>
> >> >> Subject: RE: ActiveMQ custom plugin
> >> >>
> >> >> I'd suggest that you store your cache of known credentials in your
> >> plugin.
> >> >> I'm not sure that you'd have access to the web session from a plugin,
> >> >> because that's MQTT-specific, so I think your best bet would be to
> >> store
> >> >> it
> >> >> in a Map (better: a Guava cache, so you get free age-off behavior)
> >> within
> >> >> your plugin.
> >> >>
> >> >> Tim
> >> >>
> >> >> On Dec 5, 2017 3:50 AM, "Gupta Bharat" <bharat.gu...@scania.com
> <mailt
> >> o:
> >> >> bharat.gu...@scania.com>> wrote:
> >> >>
> >> >> Hi Tim,
> >> >>
> >> >> I am having a scenario here. Using custom plugin I am validating my
> JWT
> >> >> tokens and fetching the claims from it.
> >> >>
> >> >> Claims:
> >> >>
> >> >> {
> >> >>  "unique_name": "gubhpi",
> >> >>  "sub": "gubhpi",
> >> >>  "kid": "1d884b7a-88ce-40e7-9bb8-f5e8f6b5837d",
> >> >>  "ExternalStaffReference": "0a8395d7-50b5-4cd8-ac68-6213da955f1c",
> >> >>  "ExternalCustomerReference": "acab53e8-a134-4bb8-a66d-
> 3e80430ec4d1",
> >> >>  "AdAccount": "bguvvw",
> >> >>  "FunctionalPermissions": "490879",
> >> >>  "UserPermissions": [
> >> >>    "2482503678 <(248)%20250-3678> <(248)%20250-3678>",
> >> >>    "1006"
> >> >>  ],
> >> >>  "iss": "https://xyz/";,
> >> >>  "aud": "58b99b37-db1c78d7fef5",
> >> >>  "exp": 1510240047,
> >> >>  "nbf": 1510236447
> >> >> }
> >> >>
> >> >> From this I need to fetch "AdAccount": "bguvvw", and store it
> >> >> somewhere(please suggest me-- context or session) and when next time
> >> user
> >> >> sends me message on activemq using mqtt or web socket I need to check
> >> the
> >> >> message header with the users stored in contextsession or from some
> >> >> object.
> >> >> If user is present then we validate else we don’t.
> >> >>
> >> >>
> >> >> Regards,
> >> >> Bharat Gupta
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >> Mobile: +46700869007, +91-9718483802
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>
> >> >>
> >> >> -----Original Message-----
> >> >> From: tbai...@gmail.com<mailto:tbai...@gmail.com> [mailto:
> >> >> tbai...@gmail.com] On Behalf Of Tim Bain
> >> >> Sent: den 29 november 2017 04:20
> >> >> To: ActiveMQ Users <users@activemq.apache.org<mailto:
> >> >> users@activemq.apache.org>>
> >> >> Cc: users-ow...@activemq.apache.org<mailto:users-owner@activemq.
> >> >> apache.org>
> >> >> Subject: RE: ActiveMQ custom plugin
> >> >>
> >> >> On Nov 28, 2017 8:37 AM, "Gupta Bharat" <bharat.gu...@scania.com
> <mailt
> >> o:
> >> >> bharat.gu...@scania.com>> wrote:
> >> >>
> >> >> Hello Tim,
> >> >>
> >> >> Thank you for your help. :)
> >> >>
> >> >> I have used below method to fetch that text from message when client
> >> >> publish on topic and it works.
> >> >>
> >> >> public void send(ProducerBrokerExchange producerExchange, Message
> >> >> messageSend) throws Exception {
> >> >> byte[] msg = ((ActiveMQMessage) messageSend).getContent().data;
> >> >>
> >> >>
> >> >> ((ActiveMQTextMessage)messageSend).getText()
> >> >> It returns the text from web console only.
> >> >>
> >> >>
> >> >> Really appreciate your help here. :)
> >> >>
> >> >>
> >> >>
> >> >> Great, I'm glad I've been able to help.
> >> >>
> >> >> ------------------------------------------------------------
> >> >> ------------------------------------------------------------
> >> >> ------------------------------------------------------------
> >> >> -----------------------
> >> >>
> >> >> Apart from this I have a situation here that when I try to execute
> >> below
> >> >> code:
> >> >> 1. Destination dest = session.createQueue("JWT_PAYLOAD"); ---- it is
> >> >> creating a queue
> >> >> 2. TextMessage claims = session.createTextMessage(payload); ---
> >> >> converting
> >> >> the string to message to send it on above made queue
> >> >> 3. producer.send(dest, claims); --- send the message on
> >> >> ActiveMQ.Advisory.Producer.Queue.JWT_PAYLOAD instead of queue
> >> >> JWT_PAYLOAD
> >> >> why?
> >> >>
> >> >>
> >> >> What makes you think that this message on an advisory topic was your
> >> >> message instead of a standard advisory message that's sent anytime a
> >> >> non-anonymous producer sends a message? What makes you think that
> thos
> >> >> message was sent instead of the message you sent to your queue,
> rather
> >> >> than
> >> >> sent *in addition to* the message on your queue? Can you share
> >> >> before-and-after screenshots of your queue's row on the Queues page
> of
> >> >> the
> >> >> web console? And were there any warnings or errors logged in the
> >> broker's
> >> >> logs when this happened?
> >> >>
> >> >> 4. Before executing producer.send(dest, claims); ----- it is going on
> >> >> byte[] msg = ((ActiveMQMessage) messageSend).getContent().data and
> >> >> returning null as it is again checking for Content and data. So my
> ques
> >> >> is
> >> >> why it is going back again on first line? Why it is not simply
> putting
> >> >> the
> >> >> data on queue?
> >> >>
> >> >>
> >> >> I didn't understand what you meant by "it is going back again on
> first
> >> >> line." Are you saying that the broker is putting the original message
> >> >> onto
> >> >> your topic? If so, that's because by calling super.send(), you're
> >> >> allowing
> >> >> the publishing of the original message to the original topic to
> >> >> continue. I
> >> >> advised you to do that because I didn't realize that you wanted to
> >> >> transform the message and publish it to a different destination, but
> >> >> since
> >> >> it seems like you do, I think you don't want to call super.send()
> after
> >> >> all.
> >> >>
> >> >> If that's not what you meant, then please help me to better
> understand
> >> >> your
> >> >> question.
> >> >>
> >> >> @Override
> >> >>        public void send(ProducerBrokerExchange producerExchange,
> >> Message
> >> >> messageSend) throws Exception {
> >> >> if(messageSend != null)
> >> >> {
> >> >>        if(messageSend.getContent() != null)
> >> >> {
> >> >>        =               byte[] msg = ((ActiveMQMessage)
> >> >> messageSend).getContent().data;
> >> >>
> >> >>                String message = new String(msg);
> >> >>                logger.warn("messageBody::::::::::::::::
>   "
> >> >> +
> >> >> message);
> >> >>
> >> >>                DecodedJWT jwt = JWT.decode(message);
> >> >>                byte[] contentBytes = String.format("%s.%s",
> >> >> jwt.getHeader(), jwt.getPayload())
> >> >>                                .getBytes(StandardCharsets.UTF_8);
> >> >>                byte[] signatureBytes = Base64.decodeBase64(jwt.
> >> >> getSignature());
> >> >>                String publicKeyPEM = "-----BEGIN PUBLIC KEY-----\n"
> >> >>                                + "please enter your key"
> >> >>                                + "-----END PUBLIC KEY-----";
> >> >>
> >> >>                RsaKeyUtil rsaKeyUtil = new RsaKeyUtil();
> >> >>                PublicKey pk = rsaKeyUtil.fromPemEncoded(
> publicKeyPEM);
> >> >>
> >> >>                Security.addProvider(new BouncyCastleProvider());
> >> >>                Signature signatureInstance =
> >> >> Signature.getInstance("SHA256withRSA",
> >> >> "BC");
> >> >>                signatureInstance.initVerify(pk);
> >> >>                signatureInstance.update(contentBytes);
> >> >>                boolean result = signatureInstance.verify(
> >> >> signatureBytes);
> >> >>
> >> >>                byte[] pload = Base64.decodeBase64(jwt.getPayload());
> >> >>
> >> >>                String payload = new String(pload);
> >> >>                logger.warn("messageBody::::::::::::::::
>   "
> >> >> +
> >> >> payload);
> >> >>                logger.warn("result::::::::::::::::              " +
> >> >> result);
> >> >>                if (result = true) {
> >> >>
> >> >>                        // Create a ConnectionFactory
> >> >>            ActiveMQConnectionFactory connectionFactory = new
> >> >> ActiveMQConnectionFactory("vm://localhost");
> >> >>
> >> >>            // Create a Connection
> >> >>            javax.jms.Connection jmsConnection = connectionFactory.
> >> >> createConnection();
> >> >>            jmsConnection.start();
> >> >>
> >> >>            // Create a Session
> >> >>            Session session = jmsConnection.createSession(false,
> >> >> Session.AUTO_ACKNOWLEDGE);
> >> >>
> >> >>                Destination dest = session.createQueue("JWT_
> PAYLOAD");
> >> >>                        MessageProducer producer =
> >> >> session.createProducer(dest);
> >> >>                        producer.setDeliveryMode(
> >> >> DeliveryMode.PERSISTENT);
> >> >>
> >> >>                        TextMessage claims =
> session.createTextMessage(
> >> >> payload);
> >> >>                        claims.setJMSType("TEXT");
> >> >>                        logger.warn("CLAIMS>>>>>>>>>>>>>>>>  " +
> >> >> claims);
> >> >>                        producer.send(dest, claims);
> >> >>                        logger.fatal("CLAIMS>>>>>>>>>>>>>>>>  " +
> >> >> claims);
> >> >>
> >> >>
> >> >> //
> >> >>                        MessageConsumer consumer =
> >> >> session.createConsumer(dest);
> >> >>                        consumer.setMessageListener(this);
> >> >>
> >> >>                }
> >> >>
> >> >>                else {
> >> >>
> >> >>                        logger.warn("Else Authentication failed.
> Please
> >> >> send Valid Token");
> >> >>                }
> >> >>
> >> >>                super.send(producerExchange, messageSend);
> >> >>                // getNext().send(producerExchange, messageSend);
> >> >>
> >> >>        }
> >> >>
> >> >>        else
> >> >>        {
> >> >>                logger.fatal("MESSAGE SEND CONTENT IS NULL");
> >> >>        }
> >> >>        }
> >> >> else
> >> >> {
> >> >>        logger.fatal("MESSAGE SEND IS NULL");
> >> >> }
> >> >>        }
> >> >>
> >> >>        @Override
> >> >>        public void onMessage(javax.jms.Message message) {
> >> >>                  String messageText = null;
> >> >>                try {
> >> >>                    if (message instanceof TextMessage) {
> >> >>                        TextMessage textMessage = (TextMessage)
> message;
> >> >>                        messageText = textMessage.getText();
> >> >>                        System.out.println("messageText = " +
> >> >> messageText);
> >> >>                    }
> >> >>                } catch (JMSException e) {
> >> >>                    //Handle the exception appropriately
> >> >>                }
> >> >>        }
> >> >>
> >> >> Regards,
> >> >> Bharat Gupta
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >> Mobile: +46700869007 <+46%2070%20086%2090%2007>
> >> <+46%2070%20086%2090%2007>, +91-9718483802 <+91%2097184%2083802>
> >> >> <+91%2097184%2083802>
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>
> >> >>
> >> >> -----Original Message-----
> >> >> From: tbai...@gmail.com<mailto:tbai...@gmail.com> [mailto:
> >> >> tbai...@gmail.com] On Behalf Of Tim Bain
> >> >> Sent: den 27 november 2017 08:12
> >> >> To: ActiveMQ Users <users@activemq.apache.org<mailto:
> >> >> users@activemq.apache.org>>
> >> >> Cc: users-ow...@activemq.apache.org<mailto:users-owner@activemq.
> >> >> apache.org>
> >> >> Subject: Re: ActiveMQ custom plugin
> >> >>
> >> >> Thank you for providing that code. I spent some time running your
> code,
> >> >> and
> >> >> found the following problems with it, which are causing this to not
> >> work
> >> >> as
> >> >> you intended:
> >> >>
> >> >>   1. The signature for the send() method is "public void
> >> >>   send(ProducerBrokerExchange producerExchange, Message messageSend)
> >> >> throws
> >> >>   Exception," not the signature you had defined. Because your
> signature
> >> >>   didn't match the method you were trying to override, you weren't
> >> >> actually
> >> >>   overriding a method that would be called when a message was sent,
> but
> >> >>   instead you were simply defining a public method that nothing ever
> >> >> called.
> >> >>   The compiler would have caught this for you if you'd annotated the
> >> >> method
> >> >>   as @Override; you should be using that annotation for all overriden
> >> >>   methods, for exactly this reason.
> >> >>   2. messageSend.getContent() returns null for the test message I
> sent
> >> >> via
> >> >>   the web console, but ((ActiveMQTextMessage)messageSend).getText()
> >> >> returns
> >> >>   the body. I think this same code would work for an MQTT message,
> but
> >> >> since
> >> >>   I've never used MQTT you'll need to confirm that.
> >> >>   3. I mentioned this earlier, but your send() method needs to call
> >> >>   super.send() at the end, otherwise the broker's not going to
> process
> >> >> any
> >> >>   messages and you're going to be wondering why the broker "doesn't
> >> >> work."
> >> >>   This doesn't explain why you're not seeing your logging occur, but
> >> >> once
> >> >> we
> >> >>   get past that problem, this is the next issue you're going to hit.
> >> >>
> >> >> Tim
> >> >>
> >> >> On Sun, Nov 26, 2017 at 12:41 PM, Gupta Bharat <
> >> bharat.gu...@scania.com
> >> >> <mailto:bharat.gu...@scania.com>>
> >> >> wrote:
> >> >>
> >> >> Hello,
> >> >>
> >> >> MyBroker.java
> >> >>
> >> >> package jwt.validation;
> >> >>
> >> >> import java.util.HashMap;
> >> >> import java.util.Map;
> >> >>
> >> >> import javax.jms.Destination;
> >> >> import javax.jms.ExceptionListener;
> >> >> import javax.jms.JMSException;
> >> >> import javax.jms.MessageConsumer;
> >> >> import javax.jms.Session;
> >> >> import javax.jms.TextMessage;
> >> >>
> >> >> import org.apache.activemq.ActiveMQConnection;
> >> >> import org.apache.activemq.ActiveMQConnectionFactory;
> >> >> import org.apache.activemq.ActiveMQMessageConsumer;
> >> >> import org.apache.activemq.broker.BrokerFilter;
> >> >> import org.apache.activemq.broker.Connection;
> >> >> import org.apache.activemq.broker.ConnectionContext;
> >> >> import org.apache.activemq.broker.ProducerBrokerExchange;
> >> >> import org.apache.activemq.broker.region.Subscription;
> >> >> import org.apache.activemq.command.ActiveMQDestination;
> >> >> import org.apache.activemq.command.ActiveMQMessage;
> >> >> import org.apache.activemq.command.ConnectionInfo;
> >> >> import org.apache.activemq.command.ConsumerInfo;
> >> >> import org.apache.activemq.command.Message;
> >> >> import org.apache.activemq.command.SessionInfo;
> >> >> import org.apache.log4j.Logger;
> >> >>
> >> >>
> >> >> public class MyBroker extends BrokerFilter {
> >> >>
> >> >>                final static Logger logger =
> Logger.getLogger(MyBroker.
> >> >> class);
> >> >>                private Map<String, String> userMap = new
> >> >> HashMap<String,
> >> >> String>();
> >> >>
> >> >>                public MyBroker(org.apache.activemq.broker.Broker
> >> >> next)
> >> >> {
> >> >>                                super(next);
> >> >>
> >> >>                }
> >> >>
> >> >>
> >> >>
> >> >>                public void send(ProducerBrokerExchange
> >> >> producerExchange,
> >> >> ActiveMQMessage messageSend) throws JMSException
> >> >>                {
> >> >>                                  byte[] messageBytes =
> >> >> messageSend.getContent().data;
> >> >>
> >> >>                                  Message data =
> >> >> messageSend.getMessage();
> >> >>                                  logger.warn("
> >> >> MESSAGEEEEEEEEEEEEEEEEEEEEE"
> >> >> + data);
> >> >>                                  String message = new
> >> >> String(messageBytes);
> >> >>                                  logger.warn("messageBody" +
> message);
> >> >>                                  logger.info<http://logger.info
> >> >("messageBody"
> >> >> +
> >> >> message);
> >> >>                                  logger.fatal("messageBody" +
> >> >> message);
> >> >>                                  logger.debug("messageBody" +
> >> >> message);
> >> >>
> >> >>
> >> >>                 }
> >> >>
> >> >>                public void addConnection(ConnectionContext context,
> >> >> ConnectionInfo info)
> >> >>            throws Exception {
> >> >>
> >> >>                                info.getUserName();
> >> >>                                info.toString();
> >> >>
> >> >>
> >> >>                                logger.warn("info1" +
> >> >> info.getUserName());
> >> >>                                logger.fatal("info2" +
> >> >> info.toString());
> >> >>
> >> >>       String token = context.getUserName();
> >> >>       logger.debug("token1" + token);
> >> >>       logger.warn("token2" + token);
> >> >>       logger.fatal("token3" + token);
> >> >>
> >> >>
> >> >>        // Then call your parent
> >> >>        super.addConnection(context, info);
> >> >>    }
> >> >>
> >> >>    public Subscription addConsumer(ConnectionContext context,
> >> >> ConsumerInfo info) throws Exception {
> >> >>
> >> >>
> >> >>
> >> >>        ActiveMQDestination dest = info.getDestination();
> >> >>        Connection conn = context.getConnection();
> >> >>        if (dest != null) {
> >> >>            String destName = info.getDestination().
> getPhysicalName();
> >> >>            String clientId = context.getClientId();
> >> >>            String allowedDest = userMap.get(clientId);
> >> >>
> >> >>            logger.info<http://logger.info>(">>> Got Consumer Add
> >> request
> >> >> { Destination:
> >> >> " +
> >> >> destName
> >> >>                    + ", Remote Address: " + conn.getRemoteAddress()
> >> >>                    + ", ClientID: " + clientId
> >> >>                    + " }");
> >> >>            if (allowedDest != null && (allowedDest.equals("*") ||
> >> >> allowedDest.equals(destName) || destName.startsWith("ActiveMQ"))) {
> >> >>                logger.info<http://logger.info>(">>> Subscription
> >> >> allowed");
> >> >>            } else {
> >> >>                logger.error(">>> Destination not allowed.
> Subscription
> >> >> denied!");
> >> >>                throw new Exception(">>> Subscription denied!");
> >> >>            }
> >> >>        } else {
> >> >>            logger.error("<<< Got Consumer Add request from Remote
> >> >> Address:" + conn.getRemoteAddress() + ". But destination is NULL.");
> >> >>        }
> >> >>        return super.addConsumer(context, info);
> >> >>    }
> >> >> }
> >> >>
> >> >> Sample.java
> >> >>
> >> >> package jwt.validation;
> >> >>
> >> >> import org.apache.activemq.ActiveMQMessageProducer;
> >> >> import org.apache.activemq.broker.Broker;
> >> >> import org.apache.activemq.broker.BrokerPlugin;
> >> >> import org.apache.log4j.Logger;
> >> >>
> >> >> public class Sample  implements BrokerPlugin {
> >> >>
> >> >>                final static Logger logger =
> >> >> Logger.getLogger(Sample.class)
> >> >> ;
> >> >>
> >> >>                public static void main(String[] args) {
> >> >>
> >> >>
> >> >>                }
> >> >>
> >> >>                private void runMe(String parameter){
> >> >>
> >> >>                                if(logger.isDebugEnabled()){
> >> >>                                                logger.debug("This is
> >> >> debug : " + parameter);
> >> >>                                }
> >> >>
> >> >>                                if(logger.isInfoEnabled()){
> >> >>                                                logger.info<
> >> http://logger.
> >> >> info>("This is
> >> >> info
> >> >> : " + parameter);
> >> >>                                }
> >> >>
> >> >>                                logger.warn("This is warn : " +
> >> >> parameter);
> >> >>                                logger.error("This is error : " +
> >> >> parameter);
> >> >>                                logger.fatal("This is fatal : " +
> >> >> parameter);
> >> >>
> >> >>                }
> >> >>
> >> >>                public Broker installPlugin(Broker broker) throws
> >> >> Exception {
> >> >>                                Sample sample = new Sample();
> >> >>                                sample.runMe("ActiveMQ Hello");
> >> >>
> >> >>                                return new MyBroker(broker);
> >> >>                }
> >> >>
> >> >>
> >> >> }
> >> >>
> >> >> The above are two classes I have implemented for my custom plugin.
> >> >>
> >> >> Regards,
> >> >> Bharat Gupta
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >> Mobile: +46700869007, +91-9718483802
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com><mailto:
> >> >> bharat.gu...@scania.com>
> >> >>
> >> >> From: tbai...@gmail.com<mailto:tbai...@gmail.com> [mailto:
> >> >> tbai...@gmail.com] On Behalf Of Tim
> >> >> Bain
> >> >> Sent: Sunday, November 26, 2017 4:31 AM
> >> >> To: ActiveMQ Users <users@activemq.apache.org<mailto:
> >> >> users@activemq.apache.org>>
> >> >> Cc: users-ow...@activemq.apache.org<mailto:users-owner@activemq.
> >> >> apache.org>
> >> >> Subject: RE: ActiveMQ custom plugin
> >> >>
> >> >>
> >> >>
> >> >> On Nov 24, 2017 5:44 PM, "Gupta Bharat" <bharat.gu...@scania.com
> <mailt
> >> o:
> >> >> bharat.gu...@scania.com><
> >> >> mailto:
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>>> wrote:
> >> >>
> >> >> hello Tim,
> >> >>
> >> >>
> >> >>
> >> >> My Custom Plugin is getting installed as I am using log4j to print
> >> >> random
> >> >> stuff and its getting printed in logs.
> >> >> Can you please describe in more detail exactly what methods that
> >> >> logging
> >> >> is done in and how it proves that the plugin was actually installed?
> If
> >> >> (for example) your logging is only in your constructor or your
> >> >> initialization method, that just proves that Spring made your bean,
> not
> >> >> that it was installed in the broker as a plugin.
> >> >>
> >> >> I am hereby attaching my codes that you can see.
> >> >> Where? All I see is your activemq.xml snippet below, but no actual
> code
> >> >> for your plugin.
> >> >>
> >> >> activemq.xml configurations:
> >> >>
> >> >> <plugins>
> >> >>
> >> >>                               <bean id="sample"
> >> >>
> >> >>                                class="jwt.validation.Sample"
> >> >>
> >> >>                                xmlns="http://www.
> >> >> springframework.org/schema/beans<http://springframework.org/
> >> schema/beans
> >> >> >"/>
> >> >>
> >> >>                               </plugins>
> >> >>
> >> >>
> >> >>
> >> >> Also I would like to explain you my exact requirement.
> >> >>
> >> >>
> >> >>
> >> >> The diagram below shows what I am trying to do it now.
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> [cid:image001.png@01D3658E.4A6B3E20]
> >> >> That sounds like it should be doable via an interceptor based on
> what I
> >> >> know about them (i.e. the wiki, but no hands-on experience).
> >> >>
> >> >> QUESTIONS:
> >> >>
> >> >>
> >> >>
> >> >> 1.       how can we provide JWT to custom plugin from client?
> >> >> If you have to use MQTT, you'll need to encode it directly into the
> >> >> message body, because that's all MQTT supports. You could for example
> >> >> make
> >> >> a JSON payload with two fields: the JWT and the message body. Or you
> >> >> could
> >> >> switch to OpenWire and put the JWT into a custom header on the
> message
> >> >> the
> >> >> client is sending.
> >> >>
> >> >> 2.       do we need to store jwt in topic first and then consume it
> >> >> from
> >> >> topic to validate it? (not idle case)
> >> >> You need to put the JWT into the message itself so that your plugin
> can
> >> >> evaluate the token and then decide what to do with the message based
> on
> >> >> that evaluation.
> >> >>
> >> >> 3.       can we call restful service from activeMQ broker that can
> >> >> validate token and gives the result back to broker?
> >> >> Yes, as far as I know, you'd be able to do that from within the
> broker.
> >> >> (I've never done that, but I'm not aware of anything that would
> prevent
> >> >> you
> >> >> from doing it.)
> >> >>
> >> >> Tim please let me know if I am clear with my requirements. Else we
> can
> >> >> talk more on call/phone.
> >> >>
> >> >>
> >> >>
> >> >> Thanks in advance
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> Regards,
> >> >>
> >> >> Bharat Gupta
> >> >>
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >>
> >> >> Mobile: +46700869007<tel:+46%2070%20086%2090%2007>, +91-9718483802
> >> >> <tel:+91%2097184%2083802>
> >> >>
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com><mailto:
> >> >> bharat.gu...@scania.com>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> -----Original Message-----
> >> >> From: tbai...@gmail.com<mailto:tbai...@gmail.com><mailto:tbain98@g
> >> >> mail.com> [mailto:
> >> >> tbai...@gmail.com<mailto:tbai...@gmail.com><mailto:tbai...@gmail.com
> >]
> >> >> On Behalf Of Tim Bain
> >> >> Sent: Friday, November 24, 2017 7:19 PM
> >> >> To: ActiveMQ Users <users@activemq.apache.org<mailto:
> >> >> users@activemq.apache.org><mailto:
> >> >> users@activemq.apache.org<mailto:users@activemq.apache.org>>>
> >> >> Cc: users-ow...@activemq.apache.org<mailto:users-owner@activemq.
> >> >> apache.org><mailto:users-owner@
> >> >> activemq.apache.org<http://activemq.apache.org>
> >> >>
> >> >> Subject: RE: ActiveMQ custom plugin
> >> >>
> >> >>
> >> >>
> >> >> 1. Your send() method needs to call super.send() after doing your
> >> >> custom
> >> >>
> >> >> work, otherwise the message will never be sent to the real Broker
> >> >> object.
> >> >>
> >> >> Please review the wiki page I referred to earlier, which covers how
> to
> >> >>
> >> >> implement an interceptor.
> >> >>
> >> >>
> >> >>
> >> >> 2. To me it sounds like your plugin isn't getting installed. Do you
> >> >> have
> >> >>
> >> >> any indication that it is, from logs or some other mechanism? And can
> >> >> you
> >> >>
> >> >> please share the code of the class that implements BrokerPlugin, to
> >> >> confirm
> >> >>
> >> >> that your installPlugin() method looks right, and the XML block where
> >> >> you
> >> >>
> >> >> create the plugin bean?
> >> >>
> >> >>
> >> >>
> >> >> Tim
> >> >>
> >> >>
> >> >>
> >> >> On Nov 24, 2017 8:39 AM, "Gupta Bharat" <bharat.gu...@scania.com
> <mailt
> >> o:
> >> >> bharat.gu...@scania.com><
> >> >> mailto:
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>>> wrote:
> >> >>
> >> >>
> >> >>
> >> >> Hello,
> >> >>
> >> >>
> >> >>
> >> >> I tried implementing the method as below:
> >> >>
> >> >>
> >> >>
> >> >>        public void send(ProducerBrokerExchange producerExchange,
> >> >>
> >> >> ActiveMQMessage messageSend) throws JMSException
> >> >>
> >> >>         {
> >> >>
> >> >>                  byte[] messageBytes =
> >> >> messageSend.getContent().data;
> >> >>
> >> >>                  String message = new String(messageBytes);
> >> >>
> >> >>                  logger.info<http://logger.info><http://logger.info
> >> >("messageBody"
> >> >> +
> >> >> message);
> >> >>
> >> >>        }
> >> >>
> >> >>
> >> >>
> >> >> Also I am publishing a message on a topic even though this send()
> >> >> method
> >> >>
> >> >> is not been called as logger.info<http://logger.info><
> >> http://logger.info>
> >> >> is not getting
> >> >> printed in my Custom
> >> >>
> >> >> Plugin.
> >> >>
> >> >>
> >> >>
> >> >> Could you please help me on this?
> >> >>
> >> >>
> >> >>
> >> >> Regards,
> >> >>
> >> >> Bharat Gupta
> >> >>
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >>
> >> >> Mobile: +46700869007<tel:+46%2070%20086%2090%2007>, +91-9718483802
> >> >> <tel:+91%2097184%2083802>
> >> >>
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com><mailto:
> >> >> bharat.gu...@scania.com>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> -----Original Message-----
> >> >>
> >> >> From: tbai...@gmail.com<mailto:tbai...@gmail.com><mailto:tbain98@g
> >> >> mail.com> [mailto:
> >> >> tbai...@gmail.com<mailto:tbai...@gmail.com>] On Behalf Of Tim Bain
> >> >>
> >> >> Sent: Friday, November 24, 2017 7:15 PM
> >> >>
> >> >> To: ActiveMQ Users <users@activemq.apache.org<mailto:
> >> >> users@activemq.apache.org><mailto:
> >> >> users@activemq.apache.org<mailto:users@activemq.apache.org>>>
> >> >>
> >> >> Cc: users-ow...@activemq.apache.org<mailto:users-owner@activemq.
> >> >> apache.org><mailto:users-owner@
> >> >> activemq.apache.org<http://activemq.apache.org>>
> >> >>
> >> >> Subject: Re: ActiveMQ custom plugin
> >> >>
> >> >>
> >> >>
> >> >> As I said in your other thread, you would do that by implementing
> >> >> code
> >> >> in
> >> >>
> >> >> the send() method of your subclass of BrokerFilter, which you would
> >> >> create
> >> >>
> >> >> and return in your installPlugin() method.
> >> >>
> >> >>
> >> >>
> >> >> Tim
> >> >>
> >> >>
> >> >>
> >> >> On Nov 24, 2017 3:51 AM, "Gupta Bharat" <bharat.gu...@scania.com
> <mailt
> >> o:
> >> >> bharat.gu...@scania.com><
> >> >> mailto:
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>>> wrote:
> >> >>
> >> >>
> >> >>
> >> >> Hello,
> >> >>
> >> >>
> >> >>
> >> >> I have a scenario as follows:
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> 1.       I have Custom Plugins that decrypts the data and validates
> >> >> it.
> >> >>
> >> >>
> >> >>
> >> >> 2.       I am getting Encrypted data (token) from user that need to
> >> >> be
> >> >>
> >> >> decrypted on custom plugin.
> >> >>
> >> >>
> >> >>
> >> >> 3.       Client is accessing the broker using mqtt protocol
> >> >>
> >> >>
> >> >>
> >> >> Need Solution for the following:
> >> >>
> >> >>
> >> >>
> >> >> 1.       Before getting data onto topic on ACtiveMQ broker I need to
> >> >>
> >> >> validate the  data(token) in my custom plugin
> >> >>
> >> >>
> >> >>
> >> >> 2.       How to extract a data what customer is sending? So that I
> >> >> can
> >> >>
> >> >> extract the data, decrypt the message and validate.
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> Implementation so far:
> >> >>
> >> >>
> >> >>
> >> >> 1.       Custom Plugin is ready and JAR has been added in
> >> >> <ActiveMQ>/libs
> >> >>
> >> >>
> >> >>
> >> >> 2.       Added the plugin configuration in activemq.xml
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> Could anyone help me with a solution for the same as it's critical
> >> >> case.
> >> >>
> >> >>
> >> >>
> >> >> Thank you In Advance
> >> >>
> >> >>
> >> >>
> >> >> Regards,
> >> >>
> >> >> Bharat Gupta
> >> >>
> >> >> Development & Support | Platform Technician, IXCB | Scania IT
> >> >>
> >> >> Mobile: +46700869007<tel:+46%2070%20086%2090%2007>, +91-9718483802
> >> <+91%2097184%2083802>
> >> >> <+91%2097184%2083802>
> >> >> <tel:+91%2097184%2083802>
> >> >>
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com><mailto:
> >> >> bharat.gu...@scania.com<mailto:
> >> >> bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>%3cma
> >> >> ilto:bharat.gu...@scania.com<mailto:bharat.gu...@scania.com>>>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >>
> >
>



-- 
perl -e 'print
unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*" );'

ActiveMQ in Action: http://bit.ly/2je6cQ
Blog: http://bsnyder.org/ <http://bruceblog.org/>
Twitter: http://twitter.com/brucesnyder

Reply via email to