2012-02-07 48 views
4

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

接下来,我创建了一个新项目并创建了一个Web服务客户端,并将该URL提供给WSDL文件。然后我生成了一些类(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。在此期间,服务器已启动并正在运行。有一些明显的错误吗? TimeServerBeanTimeServerBean_Service是从WSDL生成的类。

+0

该方法返回null,或者你得到一个'NullPointerException'? – millimoose 2012-02-07 01:24:02

+0

NullPointerException – Giannis 2012-02-07 01:26:32

+0

我没有看到try/catch块。如果你还没有,请添加一个,看看异常(我猜你可能*会得到一个异常)。 – paulsm4 2012-02-07 01:26:45

回答

4

两个建议:

  1. 一定会把你的方法在try/catch

  2. 假设service本身为空,然后尝试做一个明确的service.create()而不是使用@WebServiceRef注解。这里有一个很好的例子(WebSphere中,但相同的原理):

http://www-01.ibm.com/support/docview.wss?uid=swg21264135

+0

原来我简单的必须使用netbeans的插入代码功能完成所有工作。 – Giannis 2012-02-11 21:30:03

+0

@latusaki - 很高兴你有它的工作:)就我个人而言,我使用Eclipse:a)Eclipse适用于J2EE的东西以及Android的东西,b)Eclipse更加友好的IBM(和我一起使用IBM产品),以及c)Eclipse倾向于拥有更大的“生态系统”(更多第三方附加组件)。恕我直言... – paulsm4 2012-02-11 22:46:26

0

的@WebServiceRef注释仅在某些类类型的支持。示例有JAX-WS端点实现类,JAX-WS处理程序类,Enterprise JavaBeans类和servlet类。此批注在@Resource批注的相同类类型中受支持。有关支持的类类型的完整列表,请参阅Java Platform,Enterprise Edition(Java EE)5规范。