【问题标题】:JAX-WS webservice on tomcat - cannot be instantiatedtomcat 上的 JAX-WS webservice - 无法实例化
【发布时间】:2015-05-13 14:27:32
【问题描述】:

我想知道如何处理这种情况。 我所做的是我遵循了教程http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat-ssl-connection/ 创建一个类似的安全网络服务,我能够实现它,但我有一个错误,

ml.ws.api.server.InstanceResolver.createNewInstance(InstanceResolver.java:222) 在 com.sun.xml.ws.api.server.InstanceResolver.createDefault(InstanceResolver.java:184) 在 com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:209)

错误是因为我正在实例化 web 服务,例如,从这个例子中 HelloWorldImpl 类有一个带有参数的构造函数来设置类的参数。 我了解,Jax-ws Web 服务中只能使用默认构造函数,但在这种情况下,我想知道如何处理?

说喜欢

package com.mkyong.ws;

import javax.jws.WebService;

//Service Implementation Bean

@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
private ABC abc;
 public HelloWorldImpl (ABC abc)
{
    this.abc = abc;
}
    @Override
    public String getHelloWorldAsString() {
        return "Hello World JAX-WS";
    }

// and i use this abc in one of the methods 
}

【问题讨论】:

  • 你能告诉我们什么将调用这个构造函数,你将如何为它提供 abc 实例?

标签: java web-services tomcat


【解决方案1】:

这不是构造函数的正确表示法:

public void HelloWorldImpl (ABC abc) {
    this.abc = abc;
}

应该是:

public HelloWorldImpl (ABC abc) {
    this.abc = abc;
}

更新:那么为什么不添加一个默认构造函数呢?

package com.mkyong.ws;

import javax.jws.WebService;

//Service Implementation Bean

@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
private ABC abc;

public HelloWorldImpl() { 
    this("Hello World JAX-WS");
}

 public HelloWorldImpl (ABC abc)
{
    this.abc = abc;
}
    @Override
    public String getHelloWorldAsString() {
        return this.getAbc();
    }

// and i use this abc in one of the methods 
}

【讨论】:

  • 但是问题还是一样的,谁能回答一下。
【解决方案2】:

我认为您可以使用以下命令控制 HelloWorldImpl 的创建方式:@InstanceResolverAnnotation

我找不到任何好的示例,但这里有一个使用此注释的链接:http://blog.vinodsingh.com/2008/12/let-spring-load-service-class-for-jax.html

这个想法是,指定为此 Annotation 的 Value 的类将用于创建 HelloWorld WebService 的实例。

【讨论】:

  • ,谢谢,但我不使用 Spring,我通过不实例化而是通过 gettters 和 setter 解决了它,尽管它在我的情况下不是首选的。
  • 那个注解是一个jax-ws注解。任何 WebService 实现(Spring-WS 或其他)都应该能够支持它。在我看来,此注释是解决您最初问题的首选方式。
  • 但是,我同意,在大多数情况下,通过 getter 和 setter(相对于构造函数)来解决问题是一个更好的主意。
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
相关资源
最近更新 更多