Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Web服务客户端从getMyWSPort获取NullPointerException_Java_Web Services_Netbeans_Jax Ws - Fatal编程技术网

Java Web服务客户端从getMyWSPort获取NullPointerException

Java Web服务客户端从getMyWSPort获取NullPointerException,java,web-services,netbeans,jax-ws,Java,Web Services,Netbeans,Jax Ws,我创建了一个名为TimeServerBean的简单web服务。它工作正常,GlassFish服务器正在运行,我可以从浏览器访问WSDL文件。注意这是在本地主机上完成的 接下来,我创建了一个新项目,创建了一个web服务客户端,并提供了WSDL文件的URL。然后我生成了一些类(JAX-WS)。 在我的客户机类上,我有以下代码: public class SimpleClient { @WebServiceRef(wsdlLocation = "wsdl url here") sta

我创建了一个名为
TimeServerBean
的简单web服务。它工作正常,GlassFish服务器正在运行,我可以从浏览器访问WSDL文件。注意这是在本地主机上完成的

接下来,我创建了一个新项目,创建了一个web服务客户端,并提供了WSDL文件的URL。然后我生成了一些类(JAX-WS)。 在我的客户机类上,我有以下代码:

public class SimpleClient {

    @WebServiceRef(wsdlLocation = "wsdl url here")
    static TimeServerBean_Service service;
    private TimeServerBean bean;

    public SimpleClient() {
         bean = service.getTimeServerBeanPort();
    }
    //methods here
}
尽管调用
getTimeServerBeanPort
时会得到null。在此期间,服务器将启动并运行。有什么明显的错误吗
TimeServerBean
TimeServerBean\u服务
是从WSDL生成的类。

两个建议:

  • 一定要将您的方法放入
    try
    /
    catch
    块中

  • 假设
    服务
    本身为空,然后尝试执行显式的
    服务。create()
    而不是使用
    @webservicef
    注释。下面是一个很好的示例(Websphere,但原理相同):


  • 仅在某些类类型中支持@WebServiceRef注释。例如JAX-WS端点实现类、JAX-WS处理程序类、企业JavaBeans类和servlet类。此批注在与@Resource批注相同的类类型中受支持。有关支持的类类型的完整列表,请参见Java平台,企业版(Java EE)5规范。

    我通常通过使用接口和类创建实例来实现

    公共类SimpleClient{
    //接口TimeServerBean\u服务类TimeServerBean
    @WebServiceRef(wsdlLocation=“此处的wsdl url”)
    静态TimeServerBean_服务端口=新的TimeServerBean.getTimeServerBeanPort();
    公共静态void main(字符串[]args){
    试一试{
    系统输出打印项次(端口);
    System.out.println(port.methodWS(“args”);
    }捕获(例外e){
    e、 printStackTrace();
    }
    }
    //这里的方法
    }
    
    方法是否返回
    null
    ,或者您是否得到
    NullPointerException
    ?我没有看到try/catch块。如果您还没有,请添加一个,然后查看异常(我猜您可能会遇到异常)。我的猜测是
    @webservicef
    是应用服务器依赖项注入机制寻找的注释,并自动为您实例化
    TimeServerBean\u服务。
    SimpleClient
    用于哪种应用程序?如果是Web应用程序,请考虑从GalasFISH知道的“Web”对象中获取服务对象。如果它是一个独立的应用程序,您必须自己实例化服务对象。希望更熟悉JAX-WS的人能更好地回答这个问题。您在哪个容器中运行客户端,以及如何创建SimpleClient实例?SimpleClient是使用wsdl文件创建的Web服务客户端,它位于netbeans中的Java应用程序项目中。我从GUI界面创建了它的一个新实例。结果证明,我必须使用netbeans的插入代码功能,它完成了所有的工作。@latusaki-很高兴你能让它工作:)就个人而言,我使用Eclipse:a)Eclipse对J2EE和Android都很好,b)Eclipse对IBM更友好(我使用IBM产品),c)Eclipse倾向于拥有更大的“生态系统”(更多的第三方附加组件)。依我拙见