【问题标题】:Persisting data in an axis object在轴对象中持久化数据
【发布时间】:2015-10-03 02:41:03
【问题描述】:

如果这是一个愚蠢的问题,请原谅我,很遗憾我有一个作业到期!我在tomcat下运行apache轴,需要部署一个简单的web服务类,见下文。

我将下面的计数器文件安装为 /tomcat/webapps/axis/ 文件夹中的“MyCounter.jws”。 Tomcat 找到它并生成相应的 MyCounter.xml。我在 XML 文件上使用 WSDL2Java,客户端调用似乎有效,但内部状态未保存:

每次我从客户端调用MyCounter.call,返回值总是1。似乎构造函数总是在方法调用之前被调用。如何使 mycounter 整数在请求中保持不变?

public class MyCounter
{
    int mycounter;

    public MyCounter()
    {
        mycounter = 0;
    }

    public int call()
    {
        mycounter++;
        return mycounter;
    }
}

【问题讨论】:

    标签: web-services tomcat soap axis


    【解决方案1】:

    我认为持久化可能是错误的词,我认为您的意思是每次调用服务时都不会实例化 Java 类。

    见:https://axis.apache.org/axis/java/user-guide.html#Scoped_Services

    因此,您需要更改服务定义以实现此目的。

    我认为您无法使用 JWS 文件配置会话范围。正如文档所说: https://axis.apache.org/axis/java/user-guide.html#JWS_Java_Web_Service_Files_-_Instant_Deployment

    引用:

    重要提示:JWS Web 服务适用于简单的 Web 服务。你 不能在页面中使用包,并且代码是在运行时编译的 直到部署之后,您才能发现错误。 生产质量的 Web 服务应该使用带有自定义的 Java 类 部署。

    因此,如果您想使用这些功能,您应该考虑使用 Axis 提供的其他一些方法来设置 WebService。 另外我强烈建议使用 Axis2 而不是 Axis1: http://axis.apache.org/axis2/java/core/

    要设置 WSDD 文件,Axis1 可能会非常复杂。除了 Axis1 之外,不再积极开发/维护。

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2016-11-14
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多