代码之家  ›  专栏  ›  技术社区  ›  Peanut

从Java控制台应用程序和ASP.NET应用程序调用Java

  •  0
  • Peanut  · 技术社区  · 14 年前

    最近,我被要求为我的公司写一个Java应用程序。我是一个经验丰富的.NET开发人员,所以这对我来说是一个全新的领域。

    我的任务是生成一个具有多个高级任务的发票应用程序,例如:

    • 生成单个发票
    • 生成所有发票

    我的公司希望能够从Java控制台应用程序调用这些任务——传递相关的命令和参数来调用任务。他们还希望能够从ASP.NET应用程序调用相同的代码。

    因此,我的第一个想法是在Java中使用Web服务。

    我的问题是:我可以从Java控制台应用程序和ASP.NET应用程序中使用Java中的Web服务吗?或许还有更好的选择。

    任何能让我朝着正确的方向研究的建议都会受到赞赏。

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Robert Wilson    14 年前

    简单的答案是-是的。Java具有定义Web服务和部署它们的库,Java和.NET都具有用于生成Web服务客户端的实用工具。但这并不是说这很容易!

    如果我是您,我将研究使用JAX-RS实现创建一个REST服务(我最喜欢的是RESTEasy)。这将允许您在不使用SOAP的情况下创建“Web服务”,即 http://server/invoices/1 可能返回

    <invoice>
     <items>
      <item>apple</item>
      <item>banana</item>
     <items>
     <customer>robert</customer>
     <amount>5.00</amount>
    </invoice>
    

    它应该很容易用任何语言来解释。无论如何,这将是一个陡峭的学习曲线。Java和.NET之间的主要区别在于,虽然许多功能都是在.NET中构建的,但Java在生态系统中传播,这是很好的,因为它提供了多样性,但是它需要更长的时间来定位功能。

        2
  •  1
  •   Stephen C    14 年前

    “我的公司希望能够从Java控制台应用程序调用这些任务——传递相关的命令和参数来调用任务。他们还希望能够从ASP.NET应用程序调用相同的代码。”

    我不确定您到底在问什么,但我认为简单的答案是确保您的应用程序有一个入口点方法,以便它可以作为命令行应用程序运行。您需要一个具有如下方法的类:

    package foo.bar;
    
    public class Bazz {
    
        ...
    
        public static void main(String[] arguments) {
            // parse the arguments and run the application
            ...
        }
    }
    

    签名 main 方法至关重要:

    • 一定是 public static ,
    • 它一定有名字 主要的 ,
    • 它必须钉一个 String[] 论证和
    • 它必须有一个 void 返回类型。

    然后可以从命令行运行此命令,如下所示:

    java -cp <YOUR_CLASS_PATH> foo.bar.Baz arg1 arg2 ...
    

    这也可以由Java编写的另一个应用程序来完成,并且(我也想象)ASP.NET也可以这样做。