【问题标题】:can we use java code in web2py application code?我们可以在 web2py 应用程序代码中使用 java 代码吗?
【发布时间】:2012-04-09 08:26:03
【问题描述】:

我必须实现一个 web2py 应用程序,它必须访问 java 代码(它具有连接到远程机器的代码),但不确定我们是否可以在 web2py 中执行它。我的电脑有 Java 1.6,Python2.7, web2py,安装了eclipse。

用例是:

我在 web2py 应用程序中创建了一个按钮,单击该按钮后,它应该实例化 java 对象并调用该 java 对象的特定方法,该方法将进一步连接到远程机器。

怀疑是:

  1. 我们能否将特定的 java 类部署到 web2py 服务器,以便 web2py 应用程序可以轻松访问它?

  2. 是否可以从 python 代码中导入该类?

  3. 如何从python代码中实例化java对象?

  4. 以及如何从python代码中调用java方法?

问候, 皮克斯

【问题讨论】:

    标签: python python-2.7 web2py web2py-modules


    【解决方案1】:

    我会考虑研究网络服务。 如果您可以从 java 公开 url,它将路由到执行逻辑的 java 方法/函数并返回 json 对象。 在 web2py urllib2 中,您可以发出请求并将该 json 解码为本机 python 字典。 线索是您必须公开对象的所有方法并将对象作为 json 来回传递。不要害怕在大多数编程语言中,对象只是具有某些特殊品质的 hash_arrays/字典。因此,如果您可以序列化和反序列化对象并公开适当的 url,就可以了。

    在 jython 中也有 web2py 的实现。但是然后整个堆栈将在 JVM 中,我可能会更复杂的工作。

    【讨论】:

    • 好的,我明白你的意思了,看来我需要做很多额外的工作才能实现它,所以如果我去实现Web服务并且不需要JAVA代码那么如何实现它?我再次以不同的方式提出我的用例: 1. 我们的 web2py 应用程序位于一台机器上,其中 Web 客户端也将运行,DB 也将在那里。
    • 如果我进行 Web 服务实现并且不需要 JAVA 代码,那么如何实现呢?我再次以不同的方式提出我的用例: 1. 我们的 web2py 应用程序位于一台机器上,其中 Web 客户端也将运行,DB 也将在那里。 2.用户可以使用远程机器的url访问web2py应用程序,访问保存在数据库中的内容并显示给用户。 3. 服务器可以与安装了 Web 服务服务器的一个远程系统通信,并从那里获取所需的数据并保存到数据库。由于我是网络服务的新手,所以请您提供一些基本的想法如何实现它。
    • 书中有一章主要解释了如何从 web2py 中公开 web 服务,但并非如此。我对 java 不太熟悉,但我敢打赌,有些微框架只是将某些函数公开为 url 地址并提供基本的 post&get。您需要做的是让这些函数返回 jsons,然后您可以通过 urllib 发出请求。如果值得的话,我会回答自己...如果它适用于一些简单的类,我敢打赌你会比使用 java 堆栈更快地重写它。
    • 如果你真的想要那个功能,我会看这里:stackoverflow.com/questions/3290522/urllib2-and-json 阅读有关 urllib 的更多信息,并了解 java 中的 servlet + java 中的 jsons。它不应该太难,但正如我之前所说,如果它是一件小事,我怀疑它是否值得麻烦。
    • 只是关于 Jython 的评论:尽管文档指出 web2py 无需修改即可在 Jython 上运行,但我无法使其与任何最新版本一起使用。搜索网络表明对在 Jython 上运行 web2py 的兴趣不大。所以我宁愿不推荐这个选项......
    【解决方案2】:

    如果 java 所做的只是连接到远程机器,那么我强烈建议你在 python 中重新实现它。

    如果它正在做一些实质性的事情,那么考虑在它前面放置一个 Web 界面(我喜欢 spark 微框架),你可以使用 requests 模块与它交谈(通过 pip 获取) .

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2011-09-05
      • 2017-03-30
      • 2010-12-12
      • 1970-01-01
      • 2013-09-16
      • 2014-08-30
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多