cu_cef 发表于 2015-04-21 17:42

急急急 MQRMH 索引消息传输文件 websphere8 java

本帖最后由 cu_cef 于 2015-04-21 17:43 编辑

与这位楼主一模一样的问题, 也不知道他怎么解决的, 哪位大神知道解决方案
bbs.csdn.net/topics/190046875

之前是在旧版本的websphere用C程序实现的索引消息传输文件, 现在要在8.0版本 用java实现.

C版本大致如下:
   MQOD   od = {MQOD_DEFAULT};    /* Object Descriptor             */
   MQMD   md = {MQMD_DEFAULT};    /* Message Descriptor            */
   MQPMO    pmo = {MQPMO_DEFAULT};/* put message options         */
   MQGMO    gmo = {MQGMO_DEFAULT};/* get message options         */
   MQRMHX   refx = {{MQRMH_DEFAULT}}; /* reference message         */

   MQHCONNHcon;                   /* connection handle             */
   MQHOBJ   Hobj = MQHO_UNUSABLE_HOBJ;
                                    /* object handle               */
   MQLONG   CompCode ;   /* completion code               */
   MQLONG   ConnCode ; /* MQCONN completion code      */
   MQLONG   Reason;               /* reason code                   */
   MQLONG   CReason;                /* reason code for MQCONN      */
   MQLONG   co= MQCO_NONE;      /* MQCLOSE options               */
   MQLONG   DataLength;             /* Length of report message      */
   MQLONG   WaitInterval = 15 ;
                                    /* Wait interval               */
   MQLONG   QMgrCCSID;            /* QMgr CodedCharSetId         */
   PMQRMH   pMQRMH;   /* -> MQRMH structure            */
   PMQXQH   pMQXQH;               /* -> MQXQH structure            */

   char   QMName = "qmgrname" ;
                                    /* local queue manager name      */
   char   DestQName = "queuename" ;
                                    /* destination queue name      */
   char   SourceFileName = "filename" ;
                                    /* source file name            */
   char   TargetFileName = "filename" ;
                                    /* target file name            */
   char   ObjectType;
                                    /* Object type                   */
   char   Buffer;       

   strcpy(QMName, sMQManager);
   strcpy(DestQName, sMQSendQueue);
   strcpy(SourceFileName, sFileName);

   sprintf(SourceFileName,"%s\\%s",getenv("MQ_FILEPATH"),sFileName);//源文件名
   strcpy(TargetFileName, sFileName);
   sprintf(errorstr,"QMName=[%s],DestQName=[%s],SourceFileName=[%s]\n\n",QMName,DestQName,SourceFileName);

   MQCONN( QMName               /* queue manager                  */
         ,&Hcon                  /* connection handle            */
         ,&ConnCode            /* completion code                */
         ,&CReason );             /* reason code                  */

   CompCode = ConnCode;

       memset(ObjectType,' ',sizeof(ObjectType));
       memcpy(ObjectType, "FLATFILE", sizeof("FLATFILE") - 1);       

       refx.ref.StrucLength         = sizeof(refx);
   refx.ref.Encoding            = MQENC_NATIVE;
   refx.ref.CodedCharSetId      = QMgrCCSID;
   memcpy(refx.ref.Format,MQFMT_STRING
         ,(size_t)MQ_FORMAT_LENGTH);
   refx.ref.Flags               = MQRMHF_LAST;
   memcpy(refx.ref.ObjectType,ObjectType,
            sizeof(refx.ref.ObjectType));

   memset(refx.SrcName
         ,' '
         ,sizeof(refx.SrcName)+sizeof(refx.DestName));

   memcpy(refx.SrcName
         ,SourceFileName
         ,strlen(SourceFileName)
         );
   memcpy(refx.DestName
         ,TargetFileName
         ,strlen(TargetFileName)
         );

   refx.ref.SrcNameLength = strlen(SourceFileName);
   refx.ref.SrcNameOffset = offsetof(MQRMHX,SrcName);

   refx.ref.DestNameLength = strlen(TargetFileName);
   refx.ref.DestNameOffset = offsetof(MQRMHX,DestName);

       memcpy(md.ReplyToQ         
         ,"QUEUE_REPORT"
         , strlen( "QUEUE_REPORT" )
            );
   strncpy(od.ObjectName
            ,DestQName
            ,sizeof(od.ObjectName)
             );

       md.Report = MQRO_COA_WITH_FULL_DATA + MQRO_EXCEPTION_WITH_FULL_DATA;       
   pmo.Options = MQPMO_FAIL_IF_QUIESCING;
   memcpy(md.Format,MQFMT_REF_MSG_HEADER
         ,(size_t)MQ_FORMAT_LENGTH);

   MQPUT1(Hcon,                  /* connection handle            */
            &od,                     /* object descriptor for queue*/
            &md,                     /* message descriptor         */
            &pmo,                  /* options                      */
            sizeof(refx),            /* buffer length                */
            &refx,                   /* buffer                     */
            &CompCode,               /* MQPUT1 completion code       */
            &Reason);                /* reason code                  */
页: [1]
查看完整版本: 急急急 MQRMH 索引消息传输文件 websphere8 java