由于使用myeclipse自动生成的Delegate,所以在使用service实现层的时候,默认创建的时候都是使用new的方法;

这样就导致每一次请求过来都得new一个新的;如果service有注入其他的service时,就会出现null的情况;

出现该情况,有两种方法进行解决:

方法一,在serviceImpl实现成里面,使用的注入的service加一下null处理;

private ITestService testService;
private ITestService getTestService(){
  if(testervice==null){
    WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
    testService=(ITestService)context.getBean("testService");
  }
  return testService; }
public void setTestService(ITestService service) {
  this.testService = service;
}

方法二,添加Delegate类中添加注入(也可以在你创建的service加)

主要就3个地方:(代码标红的地方)

1、继承SpringBeanAutowiringSupport类;

2、Delegate实现类加注入@Controller;

3、在你需要注入的service加注入@Autowired

import javax.annotation.Resource;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.context.support.SpringBeanAutowiringSupport; @WebService(
  targetNamespace = "http://service.com/",
  serviceName = "AuthCodeService",
  portName = "service/AuthCodeServicePort",
  wsdlLocation = "WEB-INF/wsdl/AuthCodeService.wsdl")
@Controller
public class AuthCodeServiceDelegate extends SpringBeanAutowiringSupport implements IAuthCodeServiceDelegate {

   // 这个是默认创建的
// com.service.AuthCodeService authCodeService = new com.service.AuthCodeService(); @Autowired
private IAuthSmsService authSmsService; public Result SendSmsCode(
@WebParam(name="inaccessInfo") InaccessInfo inaccessInfo,
@WebParam(name="record") Record record
) {
inaccessInfo.setAccessSeq(inaccessInfo.getAccessSeq()+","+getClientInfo());
return authSmsService.sendSmsCode(inaccessInfo, record);
} @Resource
private WebServiceContext wsContext;
/**
* 获取请求端IP地址 --(这个是赠送的)
* <p>2017-4-14 上午10:15:08</p>
*/
private String getClientInfo(){
MessageContext mc = wsContext.getMessageContext();
HttpServletRequest request = (HttpServletRequest)(mc.get(MessageContext.SERVLET_REQUEST));
String remortAddress = request.getRemoteAddr();
return (remortAddress);
}
}

如发现其他方式,欢迎讨论~

Jax-ws 开发webService ,并使用spring注入service类的更多相关文章

  1. 在web项目中使用cxf开发webservice,包含spring支持

    本文主要介绍了,如何使用cxf内置的例子,学会开发webserivce,在web项目中使用,且包含spring支持. webserivce的开发可以使用cxf或者axis,好像还有httpclient ...

  2. Spring注入service为null另类解决办法 工具类 一般类 静态 非controller

    系统为SpringMVC框架,在开发的过程中有一些工具类需要调用下由spring管理的service层.但是一进注入不进来,报null异常: 在尝试了网上的一系列方法后,还是没有解决.网上的解决方法主 ...

  3. 在静态方法中应用spring注入的类

    最近在一次项目的重构中,原项目需要在静态方法中调用service,现在需要更换框架,service需要自动注入,无法再静态方法中调用 解决思路: 创建一个当前类的静态变量,创建一个方法,使用@Post ...

  4. 在websocket中怎么样注入service类

    最近项目中用到了websocket,遇到很多问题,其中一个是@ServerEndpoint修饰的类无法注入其他的bean,注入的对象都是null,在网上找了好多资料,无意中发现一个朋友的答案给了思路. ...

  5. Springboot依赖注入 Service类中使用静态变量

    @Component public class ServerHandler extends IoHandlerAdapter { @Autowired protected HealthDataServ ...

  6. Java开发WebService的几种方法--转载

    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...

  7. java开发webservice的几种方式

    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...

  8. JDK开发WebService

    java开发web service最简单的方式是用jdk6自带的支持web service的注解功能. 1.编写代码如下: package net.swiftlet; import javax.jws ...

  9. spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)

    这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据: WebSer ...

随机推荐

  1. Tp框架 之对控制器的一些操作等

    在浏览器中输入tp框架入口文件的地址,如图 要注意,localhost/后面跟的是www的下一级,tp文件的上一级,因为我直接把tp文件做成了www目录的下一级,所以我写的地址localhost后面跟 ...

  2. 1627: [Usaco2007 Dec]穿越泥地

    1627: [Usaco2007 Dec]穿越泥地 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 504  Solved: 325[Submit][Sta ...

  3. 网络AFNetworking 3.1

    下面的类已从AFNetworking 3.0中废弃: AFURLConnectionOperation AFHTTPRequestOperation AFHTTPRequestOperationMan ...

  4. 如何快速部署国人开源的 Java 博客系统 Tale

    除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...

  5. ansj 2.0.7 错误例子分析

    我在做一个solr的项目,分词选定了ansj分词. 选择ansj的原因: 1)身边若干朋友的念叨,说是效果不错 2)网上看了若干评论,说是不错 3)自己尝试了一些case,觉得确实不错. 好了,项目中 ...

  6. kali linux qq 2013

    按照网上的教程折腾了好几个小时,都没有搞定的qq for linux 在意外的尝试中成功了 文章有参考网友教程的部分:http://xiao106347.blog.163.com/blog/stati ...

  7. java 学习 todoList

    1.并发包的使用 2.线程相关的源码,怎么结束一个线程 3.单例模式代码 4.mixin 相关的理解代码 书单: effective java java 编程思想 spring 编程指南 深入理解jv ...

  8. JAVA基础知识(2)--堆栈和递归的操作

    2015-07-26 18:16:21/***该应用程序对堆栈和递归方法进行实例操作: *1.堆栈操作:先进后出,*2.递归方法:直接或者调用自己的方法:*@author lhm *Email:912 ...

  9. Python Number(数字)

    ---Number类型的细节,其包含的基本数字类型 ---Number基本数字类型之间的数值转换 ---Number上面的数学函数,有些可以直接调用,有些需要导入库 参见http://www.runo ...

  10. VS2013和VS2015中MVC 区域路由匹配顺序相反

    创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改Rou ...