Java 我如何实现以下功能?

Java 我如何实现以下功能?,java,web-services,Java,Web Services,我有一个java程序,它有一些类。三个方法分别输入A和输出B。我需要将这些方法作为web服务提供,以便我可以询问类似的问题,并返回结果B。我不想重新编写现有代码。是否有一些可用的东西,例如JAVA的web服务框架,允许我为这三种方法创建web服务接口。最简单的方法是什么 在我的研究过程中,我遇到了许多首字母缩略词和其他东西,如DynamicProject、JavaEE、Glassfish等。。。什么可以实现我的要求?谢谢 我找到的快速Java服务最简单的方法是 您可以使用他们的教程让Web服务器

我有一个java程序,它有一些类。三个方法分别输入A和输出B。我需要将这些方法作为web服务提供,以便我可以询问类似的问题,并返回结果B。我不想重新编写现有代码。是否有一些可用的东西,例如JAVA的web服务框架,允许我为这三种方法创建web服务接口。最简单的方法是什么


在我的研究过程中,我遇到了许多首字母缩略词和其他东西,如DynamicProject、JavaEE、Glassfish等。。。什么可以实现我的要求?谢谢

我找到的快速Java服务最简单的方法是

您可以使用他们的教程让Web服务器从零开始运行20分钟。下面的Restlet应该作为一个框架框架直接工作。当然,您将替换对
String b=…
的调用,并将其替换为您自己的库

public class Main extends Application {

    public static void main(String[] args) {
        Main main = new Main();
        main.start();
    }

    private void start() {
        Component c = new Component();
        c.getServers().add(Protocol.HTTP, 80);
        Application app = new Main();
        c.getDefaultHost().attach(app);
        c.start();
    }

    public Restlet createInboundRoot() {
        Router router = new Router(getContext());
        router.attach("/method/{input}", new Restlet(getContext()) {
            public void handle(Request request, Response response) {
                String a = request.getAttributes().get("input").toString();
                String b = MyLibraries.compute(a);
                response.setEntity(b, MediaType.TEXT_HTML);
            }
        });
        return router;
    }

}

如果您在JavaEE6服务器上运行,那么可以使用JAX-RS:

您可能需要某种web框架——Glassfish就是一个例子。基本上,您的应用程序不是为接收web请求而构建的,因此您需要某种容器(例如,像Tomcat这样的Servlet容器)

我认为“restlet”是一个小servlet容器,可能适合您的需要


查看:

谢谢您的回答。我不明白的是,假设我有一个由多个类组成的java程序。在某个地方我有main类的main方法,它用数据初始化一个哈希表,加载一个图并构建一个四叉树。现在我有三种方法需要通过web服务进行接口,它们使用加载在内存中的四叉树、图形和哈希表。数据可以在客户端之间以这种方式共享吗?数据将保留在服务器上。本例中的客户端是最终用户,他们从未真正接触过您的代码,但只接收带有链接媒体(css、js、图像等)的HTML响应。因此,您必须构建表示数据的视图,这些视图不应该关心应用程序的其余部分如何工作。一件非常常见的事情是以JSON的形式提供数据,并使用javascript(您唯一可用的客户端处理)对数据进行有趣的处理。此外,我认为您可能必须重写“main”函数,以适应您使用的任何web框架。此外,每个客户端可能会调用应用程序的另一个实例--web框架通常有一种方法可以提高效率(例如,不重新定义类定义,而是创建单独的实例)这意味着您的数据应该是正常的,除非您对相同的文件执行磁盘IO,或者您的方法不是线程安全/多进程安全的(取决于您的web服务器的配置),否则我最终使用了restlet。非常感谢。