我正在处理的应用程序需要与远程位置的IBM MQ服务器进行通信.我们目前有一个使用活动MQ的工作系统,它使用代理,以及连接到这个远程IBM MQ服务器的桥,并且工作正常.
由于一些新的增强,我们现在尝试使用IBM客户端jar而不是Active MQ来实现相同的功能.
我面临的问题是我可以连接到远程服务器的inboundQ并发送消息.但我总是从远程服务器出站队列接收null.但我无法检查是否在远程位置收到了消息.但是,如果通过旧的ActiveMQ系统发送相同的消息将从远程MQ服务器获得响应.
旧的Active MQ在内部使用桥连接到远程IBM MQ服务器,该服务器的配置与我正在使用的新代码完全相同.
我已尝试从互联网和堆栈溢出本身的多个代码,并始终我能够连接但没有得到任何响应.
此外,尝试从远程IBM MQ发送或接收时,我没有收到任何错误或异常.
我将粘贴一个我试图开始工作的示例代码.我在代码中更改了一些配置值.
我怀疑如下.
我正在做的就是将IBM MQ客户端jar复制到应用程序中,并使用代码将消息发送到远程MQ.我还没有安装任何其他应用程序.这样的系统会工作还是应该总是有一些像活动MQ这样的中间程序?
相同的代码能够从我在本地网络中安装但未能从远程服务器获得响应的IBM MQ服务器发送和接收?这让我相信如果我在配置中遗漏了什么?除了在代码中还应该配置什么?
我看到没有错误或例外.始终发送消息但响应为空.我没有看到任何用户名密码或公钥 - 私钥认证的使用.是否通常使用任何身份验证来检查源.?
我正在使用IBM MQ客户端5.3版本,我知道它已经过时了.但是使用它,因为它们工作的主动MQ设置使用相同的并且正常工作.我无法知道远程计算机上的IBM MQ服务器上存在哪个版本.如果我们使用与服务器MQ版本不同的客户端MQ版本,是否存在问题.?
在本地环境中适用于我的示例代码,即能够从我在本地网络中的另一台机器上安装的IBM MQ服务器发送和接收.当我尝试将其与远程IBM MQ服务器一起使用时,相同的代码将获取null响应.
import javax.jms.*;
import javax.jms.JMSException;
import com.ibm.mq.jms.*;
import com.ibm.jms.JMSMessage;
import javax.jms.TextMessage;
public class SendReceive {
private MQQueueConnectionFactory connectionFactory;
private MQQueueConnection connection;
private void runTest() {
try {
connect();
connection.start();
MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue) session.createQueue("INBOUND_QUEUE"); /* values replaced with correct values in deployment server */
MQQueue queue2 = (MQQueue) …Run Code Online (Sandbox Code Playgroud) 如何将double值工资格式化为%{emp.salary}中的两位小数
<input type='text' name='salary' value='<s:property value="%{emp.salary}"/>' />
Run Code Online (Sandbox Code Playgroud)
我知道如何在servlet/POJO类中执行它并正确发送它.我的问题是如何在el表达式中的jsp页面上执行此操作.
我也知道这不是最好的方法.但我想知道是否可以做到.
我有一个intel十六进制格式的字符串,需要将其转换为十六进制格式,然后从那里转换为十进制。数据从gps设备发送。
这是我应该得到的结果
Intel hex : 85630800 (input)
device hex : 00086385
decimal : 549765
Run Code Online (Sandbox Code Playgroud)
我怎么能得到这个?
我试图将intel hex转换为二进制(因为intel hex是二进制的ascii rep)和将binary转换为hex,但是它没有给我输入86630800(intelhex)的值00086385(hex)
我现在正在看这个库Java Intel hex parser https://github.com/j123b567/java-intelhex-parser
但这是关于将intel hex文件转换为二进制格式而不是字符串的问题。我试图查看我是否可以使用该代码(部分或全部),但似乎真的过分了。
还查看将Intel HEX文件转换为二进制文件,但这是针对python的。
一旦将其转换为普通十六进制,就可以将Integer.ParseInt()或Long.ParseInt()用作小数。
但是我无法将intel十六进制字符串转换为普通的十六进制格式。有没有办法将intel十六进制字符串转换为java中的普通十六进制字符串或值?
更新资料
阅读答案后,我意识到要问的正确问题是如何将Little endian十六进制字符串转换为Big endian。我所拥有的GPS设备的文档将格式指定为intel hex(也许是因为基于Intel的处理器是低位字节序),这使我无法理解我所拥有的数据格式。
我怀疑短路运营商的优先级.
以下是短路运营商的经典例子.
if(denom!= 0 && num/denom> 10)
这里使用简写操作符允许我们防止除零错误,因为从不执行num/denom.
现在我的问题是Java说"/"运算符的优先级高于"&&",那么"&&"的左侧如何在"/"之前进行评估.