web-services - 将数据保存在 Axis 对象中

标签 web-services tomcat soap axis

如果这是一个愚蠢的问题,请原谅我,不幸的是我有一项任务到期了!我在 tomcat 下运行 apache axis,需要部署一个简单的 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;
    }
}

最佳答案

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

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

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

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

引用:

Important: JWS web services are intended for simple web services. You cannot use packages in the pages, and as the code is compiled at run time you can not find out about errors until after deployment. Production quality web services should use Java classes with custom deployment.

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

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

关于web-services - 将数据保存在 Axis 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918376/

相关文章:

api - REST API 模式的替代方案

java - JAXB @XmlSeeAlso 导致与域对象的紧密耦合

c# - 发送 Ajax POST 时获得 401 Unauthorized

java - Java Servlet 中的 UTF-8 在部署到 Azure 网站时不起作用

尝试使用 Maven 从 Eclipse 部署时 Tomcat 拒绝连接

php - SoapClient 未从 SimpleXMLObject 呈现正确的 xml

java - 如何在 Java 中手动将 cookie 添加到 Web 服务调用中?

java - 如何通过 javax.xml.ws.Service 进行调用

java - 如何从 JSP tomcat 服务器运行 jar

java - SOAP:如何在不破坏现有客户端的情况下扩展类型?