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倾向于拥有更大的“生态系统”(更多的第三方附加组件)。依我拙见