当前位置:编程学习 > JAVA >>

spring定时调用 webservice请求,getPort报空指针、

spring定时调用 webservice请求,getPort报空指针、
执行execute方法报下面的错,直接运行main方法代码一模一样不报错啊。
各位大侠有遇到过吗、
java.lang.NullPointerException
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPortModel(WSServiceDelegate.java:570)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:273)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:267)
at javax.xml.ws.Service.getPort(Service.java:92)
at com.chinatelecom.udb.UDBCommon.getUDBCommonHttpPort(UDBCommon.java:63)
at com.ideal.business.schedule.SyncUDBSchedule.sendSysUDBreqeust(SyncUDBSchedule.java:75)
at com.ideal.business.schedule.SyncUDBSchedule.execute(SyncUDBSchedule.java:57)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)


调度类:
package com.ideal.business.schedule;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.chinatelecom.udb.AccountInfoRefreshForUAMRequest;
import com.chinatelecom.udb.AccountInfoRefreshForUAMResponse;
import com.chinatelecom.udb.UDBCommon;
import com.chinatelecom.udb.UDBCommonPortType;
import com.chinatelecom.udb.UserIDList;
import com.ideal.business.util.CommonUtil;
import com.ideal.business.util.PropertyTool;
import com.ideal.puzzlesback.syslog.dao.UissSUdbLogsDAO;
import com.ideal.puzzlesback.syslog.domain.UdbReqLog;

public class SyncUDBSchedule implements Job {
private static UissSUdbLogsDAO uissSUdbLogsDAO;
PropertyTool pt= new PropertyTool();
private ApplicationContext ctx = null;

public SyncUDBSchedule() {
ctx = new ClassPathXmlApplicationContext("conf/applicationContext*.xml");
uissSUdbLogsDAO = (UissSUdbLogsDAO) ctx.getBean("uissSUdbLogsDAO");
}
public void execute(JobExecutionContext context) throws JobExecutionException {
SyncUDBSchedule sdc  = new SyncUDBSchedule();
List<UdbReqLog> list = uissSUdbLogsDAO.selectLogs();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
AccountInfoRefreshForUAMRequest aRequest ;
for(UdbReqLog o:list){
String timeStamp = sdf.format(new Date());
aRequest = new AccountInfoRefreshForUAMRequest();
aRequest.setSrcSsDeviceNo(o.getSrcSsDeviceno());
aRequest.setPasswd(o.getPassword());
aRequest.setTimeStamp(timeStamp);
UserIDList value = new UserIDList();
List<String> ulist = new ArrayList<String>();
String us = o.getUids();
String[] ss=us.split(",");
for(String s:ss){
ulist.add(s);
}
value.setUserID(ulist);
aRequest.setUserIDInfo(value);
sdc.sendSysUDBreqeust(aRequest);
}
}
public  void sendSysUDBreqeust(AccountInfoRefreshForUAMRequest request){
UdbReqLog log = new UdbReqLog();
log.setId(CommonUtil.getUid());
log.setPassword(request.getPasswd());
log.setSrcSsDeviceno(request.getSrcSsDeviceNo());
log.setTimeStamp(request.getTimeStamp());
String uids = "";
List<String> us = request.getUserIDInfo().getUserID();
for (String uid : us) {
uids = uid + ",";
}
log.setUids(uids);
 try {
UDBCommon udb = new UDBCommon();
UDBCommonPortType upt = udb.getUDBCommonHttpPort();
AccountInfoRefreshForUAMResponse response = upt
.accountInfoRefreshForUAM(request);

int rspCode = response.getResultCode();
String rspDesc = response.getDescription();

System.out.println(rspCode + "," + rspDesc);
log.setRspCode(rspCode+"");
log.setRspDesc(rspDesc);

uissSUdbLogsDAO.savaUDBWebServiceLogs(log);
} catch (Exception e) {
try {
log.setRspCode("5");
log.setRspDesc(e.getMessage());
uissSUdbLogsDAO.savaUDBWebServiceLogs(log);
} catch (Exception e1) {
System.out.println(e.getMessage());
}
}
}
public static void main(String[] args) {
SyncUDBSchedule sdc  = new SyncUDBSchedule();

List<UdbReqLog> list = uissSUdbLogsDAO.selectLogs();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
AccountInfoRefreshForUAMRequest aRequest ;
for(UdbReqLog o:list){
String timeStamp = sdf.format(new Date());
aRequest = new AccountInfoRefreshForUAMRequest();
aRequest.setSrcSsDeviceNo(o.getSrcSsDeviceno());
aRequest.setPasswd(o.getPassword());
aRequest.setTimeStamp(timeStamp);
UserIDList value = new UserIDList();
List<String> ulist = new ArrayList<String>();
String us = o.getUids();
String[] ss=us.split(",");
for(String s:ss){
ulist.add(s);
}
value.setUserID(ulist);
aRequest.setUserIDInfo(value);
sdc.sendSysUDBreqeust(aRequest);
}
}
}
报错代码类
package com.chinatelecom.udb;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;

/**
 * This class was generated by the JAX-WS RI. JAX-WS RI 2.1.3-hudson-390-
 * Generated source version: 2.0
 * <p>
 * An example of how this class may be used:
 * 
 * <pre>
 * UDBCommon service = new UDBCommon();
 * UDBCommonPortType portType = service.getUDBCommonHttpPort();
 * portType.accountBinding(...);
 * </pre>
 * 
 * </p>
 * 
 */
@WebServiceClient(name = "UDBCommon", targetNamespace = "http://udb.chinatelecom.com", wsdlLocation = "UDBCommon.wsdl")
public class UDBCommon extends Service {

private final static URL UDBCOMMON_WSDL_LOCATION;
private final static Logger logger = Logger
.getLogger(com.chinatelecom.udb.UDBCommon.class.getName());

static {
URL url = null;
try {
URL baseUrl;
baseUrl = com.chinatelecom.udb.UDBCommon.class.getResource(".");
url = new URL(baseUrl, "UDBCommon.wsdl");
} catch (MalformedURLException e) {
logger
.warning("Failed to create URL for the wsdl Location: 'UDBCommon.wsdl', retrying as a local file");
logger.warning(e.getMessage());
}
UDBCOMMON_WSDL_LOCATION = url;
}

public UDBCommon(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}

public UDBCommon() {
super(UDBCOMMON_WSDL_LOCATION, new QName("http://udb.chinatelecom.com",
"UDBCommon"));
}

/**
 * 
 * @return returns UDBCommonPortType
 */
@WebEndpoint(name = "UDBCommonHttpPort")
public UDBCommonPortType getUDBCommonHttpPort() {
return super.getPort(new QName("http://udb.chinatelecom.com",
"UDBCommonHttpPort"), UDBCommonPortType.class);
}

}
其中空指针跟到
super.getPort(new QName("http://udb.chinatelecom.com",
"UDBCommonHttpPort"), UDBCommonPortType.class);
这一句的时候就抛出来空指针。。。

运行调度类的main方法就没这个错,这是何解啊、 Spring Web服务
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,