65.9K
CodeProject 正在变化。 阅读更多。
Home

一起使用 C#、Java Web 服务和 JMS

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.80/5 (10投票s)

2005 年 1 月 14 日

CPOL

2分钟阅读

viewsIcon

130218

downloadIcon

2400

弥合 Java 和 C# 之间的差距,使用 Web 服务将 JMS 特定的消息发送到 C# 客户端。

引言

毫无疑问,.NET 比 SWING 更先进,因此如果您需要创建一个桌面应用程序,.NET 是最佳选择。 Java 在服务器端的不同领域有一些优势,其中之一就是 JMS。(很多人不同意)。我尝试使用 .NET 作为客户端的强大功能,并将其与 Java Web 服务异步集成,此外,我还在 Web 服务端使用 JMS 向 .NET 客户端发送消息。这只是一个小框架的开始,可以扩展以创建一个功能完善的 .NET、JMS 交互框架

背景

我有一个 Java 中的 SWING 客户端/JMS 应用程序。我的另一个应用程序是在 .NET 中,也需要从 JMS 接收消息。

使用的技术

  1. 异步 DOTNET Web 服务
  2. DOTNET 委托
  3. Java Web 服务 - AXIS
  4. Java 消息服务 (JMS)
  5. HTTPConnectionFactory

如何运行应用程序?

Java Web 服务是使用 JBuilderX 创建的,并在 JBoss 3.x 上进行了测试。要运行该应用程序,您需要按以下顺序运行应用程序

  1. Java Web 服务。

    在 JbuilderX 中打开项目,并使用配置“启动 Web 服务服务器”运行服务器
  2. .NET 客户端

    更新 Web 引用
    使用 Visual Studio .NET 2003 运行应用程序
  3. Java JMS 消息发布者类。JMSChatPublisher

    在 JbuilderX 中打开项目,并使用配置“通过 JMSPublisher 发送消息”运行应用程序

    在控制台窗口中,写入消息并按 Enter 键。这些消息将通过 Web 服务,并显示在 .NET 应用程序的 textBox 中。上面还显示了所描述内容的图像。

架构图

使用代码

Java 端代码

注意:代码未经过优化,并且未包含任何设计模式。

以下代码在 ReceiverWebService 中编写,它创建 JMSChatSubscriber 并调用 getSynchronousMessage 并等待函数返回响应。

   public String getJMSChatPublisher() {

    JMSChatSubscriber jmsChatSubscriber = null;
    jmsChatSubscriber = new JMSChatSubscriber();

    return jmsChatSubscriber.getSynchronousMessage();

  }

.NET 端代码

客户端使用 RegisterJMS 异步调用 Web 服务,并在回调 ServiceCallback 中接收响应。使用 EndgetJMSChatPublisher 收到消息后。它再次调用 RegisterJMS 以等待下一条消息

    
public void RegisterJMS(NotifyMessage function)
{    
    em = new ReceiverWebServiceService ();
    AsyncCallback cb = new AsyncCallback(ServiceCallback);
    IAsyncResult ar = em.BegingetJMSChatPublisher(cb,em);
    this.callFunction = function;
}
public void ServiceCallback(IAsyncResult ar)
{
    string str = em.EndgetJMSChatPublisher(ar);
    callFunction(str);
    RegisterJMS(callFunction);        
}
            

结论

我没有实现或展示以下案例,因为它们非常简单。
  1. .NET 应用程序作为发送者 - 创建一个 Web 方法,该方法接收消息并将其发送到 JMS Topic
  2. Java 接收器 - 创建一个 Java 类,它可以异步等待消息。
    subscriber.setMessageListener(messageListerner);
    connection.start();
    // No need to do this as the message will be received in messageListerner
    //subscriber.receive();
                        

关注点

此应用程序展示了如何在不使用任何桥接技术的情况下从 JMS 接收消息到 .NET 客户端,这不仅成本高昂,而且是一个很大的开销。我不是一个很好的作者,所以我希望通过架构图和代码可以理解一切 :)

历史

01-14-2005:

  • 原文

 

© . All rights reserved.