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

在 Java 客户端中消费 WCF 服务

starIconstarIconstarIconstarIconstarIcon

5.00/5 (14投票s)

2014年5月23日

CPOL

3分钟阅读

viewsIcon

175023

本文将介绍如何通过 Java 客户端应用程序使用 WCF 服务。

引言

WCF 旨在支持互操作性。 作为一名 .NET 开发人员,很难证明这个概念。 在我的朋友 Jay D Khambholiya(一位 Java 开发人员)的帮助下,我创建了这个 POC。

本文将通过以下三个步骤介绍如何在 Java 客户端应用程序中使用 WCF 服务

  1. 创建 WCF 服务
  2. 在 IIS 中托管 WCF 服务
  3. 在 Java 客户端中使用 WCF 服务

步骤 1:创建 WCF 服务

  • 打开 Visual Studio 2012 > 文件菜单 > 单击新建项目… > 选择类库 – CalculatorService > 单击确定

  • 删除自动生成的类 - Class1.cs 文件。
  • 右键单击 CalculatorService 项目 > 添加 > 单击新建项 > 选择 WCF 服务 > 提供名称作为 CalculatorService > 单击添加按钮

  • 这将添加所需的程序集引用(例如,System.ServiceModel),以及服务协定接口 – ICalculatorService.cs 和服务类 – CalculatorService.cs
  • 按如下方式修改 ICalculatorService.cs
using System.ServiceModel;
namespace CalculatorService
{
    [ServiceContract]
    public interface ICalculatorService
    {
        [OperationContract]
        int Add(int num1, int num2);
    }
} 
  • 按如下方式修改 CalculatorService.cs
namespace CalculatorService
{
    public class CalculatorService : ICalculatorService
    {
        public int Add(int num1, int num2)
        {
            return num1 + num2;
        }
    }
}
  • [CTRL]+[SHIFT]+b 构建解决方案,或转到“生成”菜单 > 单击“生成解决方案”选项。

步骤 2:在 IIS 中托管 WCF 服务

  • 添加一个新的网站以在 IIS 中托管 Calculator Service。
  • 转到文件菜单 > 添加 > 单击新建网站… > 选择 WCF 服务 > 提供一个合适的名称 – CalculatorServiceIISHost > 单击确定

  • 将添加一个包含服务类 - Service.cs 和接口 - IService.cs 的新网站,位于 App_Code 文件夹中以及一个 Service.svc 文件。 由于服务已经创建,请从 App_Code 文件夹中删除自动创建的服务类 (Service.cs) 和接口 (IService.cs)。
  • 右键单击 CalculatorServiceIISHost 项目 > 单击添加引用 > 选择 CalculatorService > 单击确定

  • 打开 Service.svc 文件 > 删除 CodeBehind 属性
<%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>
  • 如下所示修改 Service 属性
<%@ ServiceHost Language="C#" Debug="true" Service="CalculatorService.CalculatorService" %>
  • 修改 web.config 文件以包含以下设置
<system.serviceModel>
    <services>
        <service name="CalculatorService.CalculatorService" 
                 behaviorConfiguration="mex">
            <endpoint address="CalculatorService" binding="basicHttpBinding"
               contract="CalculatorService.ICalculatorService"></endpoint>
            <host>
                <baseAddresses>
                    <add baseAddress="https://:8080/"/>
                </baseAddresses></host>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="mex">
                <serviceMetadata httpGetBinding="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>
  • 现在,该服务已准备好在 IIS 中托管。
  • 打开 IIS > 右键单击默认网站 > 单击添加应用程序… > 输入别名 – calculator > 选择服务的物理路径 > 单击确定

  • 如下所示启用匿名身份验证

  • 转到内容视图 > 右键单击 Service.svc > 单击浏览

步骤 3:在 Java 客户端中使用 WCF 服务

  • 使用的工具: Eclipse Indigo,Apache Tomcat 6,Apache Axis(Eclipse Indigo 中预装)
  • 在 Eclipse 中创建一个新的动态 Web 项目

  • 要创建 WS 客户端,请选择新建 > Web Services > 选择 Web Service Client > 单击下一步按钮

  • 输入 WCF 服务的 WSDL 路径 > 单击完成按钮

  • 这应该会自动生成 WS 代理的代码

  • 创建一个简单的 JSP 页面,其中包含两个文本框和一个 servlet,用于通过 Web 服务调用“add”方法
  • 在 WCFServlet 的 doPost() 方法中编写以下代码以调用 Web 服务的“add”方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
 Integer input1=Integer.parseInt(request.getParameter("input1"));
 Integer input2=Integer.parseInt(request.getParameter("input2"));
 ICalculatorServiceProxy calService=new ICalculatorServiceProxy();
 Integer result=calService.add(input1,input2);
 request.setAttribute("res", "The result is: "+result);
 RequestDispatcher rd=request.getRequestDispatcher("WSDemo.jsp");
 rd.forward(request, response);
}
  • 在同一页面 WSDemo.jsp 上显示结果

摘要

任何项目或个人都可以参考本文,以获得关于如何创建 WCF 服务并在 IIS 中托管,然后创建 Java 客户端应用程序以使用该服务的逐步指导。

历史

在此处保持您所做的任何更改或改进的实时更新。

© . All rights reserved.