我目前正在部署REST应用程序以将消息发布到JMS,但是为了通过QueueConnectionFactory进行连接,我们正在创建上下文,但是我们想使用在Webpshere和JMS层上定义的用户名和密码,绕过身份验证在Java代码中用于createContext()。
一旦在JMS上连接了用户名和密码,我就不想在Java代码上通过身份验证。
下面是使用的代码:
JArray array = JArray.FromObject(people);
JObject result = new JObject(
new JProperty("People",
new JArray(array.Children<JObject>()
.Select(jo =>
new JObject(
new JProperty("PersonId", jo["PersonId"]),
new JProperty("PersonFields",
new JArray(jo.Descendants()
.OfType<JProperty>()
.Where(jp => jp.Name != "PersonId" && jp.Value is JValue)
.Select(jp =>
new JObject(
new JProperty("Description", jp.Name),
new JProperty("Value", jp.Value)
)
)
)
)
)
)
)
)
);
string json = result.ToString();
程序运行时,我们在日志中获得以下sysout:
[12/4/18 22:00:31:170 BRST] 0000017d SibMessage W
[BAP_BUS:productionbackupNode01.server1-BAP_BUS] CWSII0212W:总线 BAP_BUS拒绝匿名用户访问总线。 [12/4/18 22:00:31:249 BRST] 0000017d SystemOut O <<< --- AutosysExecProvider.putRequestInJMSQueue方法。
我在Webps上使用WAS路径设置了用户名和密码: 资源\ JMS \连接工厂\新建
答案 0 :(得分:0)
好消息,使用下面的注释并更改了通过JMS发布消息的方法后,问题已解决:
@Resource(lookup = "jms/bapssdEE/autosysCF")
ConnectionFactory connectionFactory;
@Resource(lookup = "jms/bapssdEE/autosysQ")
Queue demoQueue;
private void putRequestInJMSQueue(String envelope) {
try (JMSContext context = connectionFactory.createContext();){
context.createProducer().send(demoQueue, envelope);
同样重要的是,我们只是在Webps上的Mapping-configuraiton别名字段中定义了创建的用户,然后将消息发布到JMS,而没有在代码上公开用户名和密码。