`
qing_gee
  • 浏览: 121900 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

WebService对象调用spring注解

阅读更多

前言:前面一文写完了webservice的通信,然后接下来在实际项目中发现了webservice类中无法直接使用spring注解过的属性,又经过将近一天的调查,脑子几乎僵硬了,自己差点放弃,在领导的帮助下最终找到解决方案,就赶紧总结下来,人贵有思,好记忆不如烂笔头,记录下来就是资源。

 

首先,如果你是这样直接使用的话,对象是空的,如下图,moneyuserDAO是无法直接使用的,即使spring已经对其进行加载,但是在webservice中是不能直接使用的,但是spring加载的访问数据库持久层的DAO对象等会存储在WebApplicationContext中,那么我有了以下的方式

 

第一步:写好以下的单例内容

package com.ebiz.cms.webservice;

import org.springframework.web.context.WebApplicationContext;

public class ServicesSingleton {
	private WebApplicationContext servletContext;

	public WebApplicationContext getServletContext() {
		return servletContext;
	}

	public void setServletContext(WebApplicationContext servletContext) {
		this.servletContext = servletContext;
	}

	private volatile static ServicesSingleton singleton;

	private ServicesSingleton() {
	}

	public static ServicesSingleton getInstance() {
		if (singleton == null) {
			synchronized (ServicesSingleton.class) {
				if (singleton == null) {
					singleton = new ServicesSingleton();
				}
			}
		}
		return singleton;
	}
	
	public Object getDAO(Class<?> classNameOfDAO) {
		String implName = classNameOfDAO.getSimpleName();
		String firstChar = implName.substring(0, 1);
		implName = firstChar.toLowerCase() + implName.substring(1) + "Impl";
		return singleton.getServletContext().getBeansOfType(classNameOfDAO).get(implName);
	}
	
}

注意里面最重要的getDAO方法和单例的实现方式,通过WebApplicationContext的getBeansOfType方法找到对应的DAO类。

 

 

第二步:编写tomcat启动时加载WebApplicationContext的类和xml配置

package com.ebiz.cms.webservice;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class InitServlet extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = -3962535683227715257L;

	@Override
	public void init() throws ServletException {
		WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
		ServicesSingleton.getInstance().setServletContext(ctx);
	}
}

 

 <servlet>
      <servlet-name>initServlet</servlet-name>
      <servlet-class>com.ebiz.cms.webservice.InitServlet</servlet-class>
      <load-on-startup>0</load-on-startup>
</servlet>

 以上,就会将对应的WebApplicationContext对象加载到单例中,然后我们再在webservice对象中通过getDAO方法获取对应的DAO对象对数据库进行持久层操作

public String createMemPxy(String username, String password, String mobile, String email, String type) {
		try {
			ServicesSingleton single = ServicesSingleton.getInstance();
			MembersDAO memberDAO =  (MembersDAOImpl)single.getDAO(MembersDAO.class);

 以上只写出service对象的service方法片段

 

总结:我在此过程中卡到了一个点就是,我没有通过webservice之间的访问方式去获取对象的单例,而是通过在service类中写main方法去测试调用单例,却发现在main方法中怎么都不会获取tomcat启动时初始化好的单例,这是一个低级错误,因为经过一天的调查,脑子基本上以及僵硬了,不过经过领导的指点后,顺利的解决了该问题。这样,整体的Java调用webservice以及关联spring的持久层操作就搞定了,舒心啊!

  • 大小: 6.3 KB
2
0
分享到:
评论

相关推荐

    用XFire开发WebService+Spring注解

    【标题】"用XFire开发WebService+Spring注解"涉及的主要知识点是利用XFire框架创建Web服务,并结合Spring框架的注解进行服务的管理和集成。XFire是一个强大的Java Web Service实现,它允许开发者轻松地创建和消费...

    发布webService服务接口与spring整合教程

    Spring支持基于注解的Web Service发布,如使用`@WebService`和`@WebServiceClient`。你也可以使用Spring-WS或Apache CXF等库来创建WSDL并部署服务。 4. **测试和调试**:确保编写了单元测试来验证Web Service接口的...

    springcloud feign 服务消费者 类似 webservice

    在Spring Cloud的环境中,Feign会自动发现服务提供者的位置(通过Eureka、Consul等服务注册与发现组件),并创建一个代理对象来执行这些方法,实现了透明化的远程调用。 除了基本的HTTP请求,Feign还支持更多的特性...

    WebService调用代码样例

    本示例主要关注的是如何使用Java进行WebService调用,这在企业级应用开发中非常常见,特别是在需要跨平台集成时。以下是关于这个主题的一些详细知识点: 1. **WebService的基本概念**: WebService是一种基于开放...

    Spring+webservice例子

    1. **Spring SOAP Web Service**: 使用Spring的`WebServiceTemplate`或JAX-WS的`@WebService`注解创建SOAP服务。服务端通过定义接口和实现类,客户端通过调用这些接口实现数据交互。 2. **Spring配置文件**:XML...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    这可以通过创建一个`@WebServiceServer`注解的类完成: ```java // GreetingServerConfig.java import org.apache.cxf.frontend.ServerFactoryBean; import org.springframework.beans.factory.annotation....

    webservice cxf 整合spring例子源代码

    同时,Spring框架作为Java应用的基础设施,可以方便地管理对象依赖和提供事务控制。将CXF与Spring整合,可以使Web服务的实现更加优雅和高效。 【描述】:提供的源代码示例是关于如何将CXF和Spring进行集成,以便在...

    webservice客户端,整合spring

    - **使用Spring自动装配**:通过`@Autowired`注解,可以将CXF客户端注入到需要调用Web Service的类中,实现自动化管理。 5. **手动配置与自动配置**: - **手动配置**:在没有使用Spring Boot或Spring的自动配置...

    WebService版集成Spring的HelloWorld

    【WebService版集成Spring的HelloWorld】是一个典型的教程,旨在帮助开发者了解如何在Spring框架中集成和...通过这个过程,你可以学到Spring的配置技巧、WebService的创建和调用,以及如何在实际项目中应用这些技术。

    webservice 各种调用方法汇总

    通过JAX-WS,开发者可以方便地定义服务接口,并通过注解来指定服务行为和消息格式。客户端可以使用JAX-WS的Stub类来调用服务。 5. Axis2: Axis2是Apache基金会的一个开源Web服务框架,支持SOAP 1.1和1.2,以及...

    WebService+CXF+Spring+MySql+注解

    在本项目中,注解可能被用于简化配置,例如Spring的@Autowired用于自动装配依赖,@WebService和@WebMethod用于标记WebService接口和方法。 综上所述,这个项目结合了多种技术来构建一个后端服务器,它利用了...

    WebService CXF 对象传递 附

    **WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...

    webservice + spring + hibernate

    综上所述,"webservice + spring + hibernate"的组合使用,旨在构建一个灵活、健壮的分布式系统,其中Web服务提供远程调用能力,Spring提供整体架构支持,而Hibernate则作为数据访问层,确保了数据操作的便捷和高效...

    Spring 实现webService

    - 在服务端,开发者可以创建一个普通的Java类作为业务逻辑,并使用Spring的`@WebService`注解来标记这个类作为Web服务的实现。然后,通过配置Spring的ApplicationContext,可以将这个服务注册到Axis的Servlet中,...

    webservice发布及调用

    - 使用适当的注解来定义 WebService 接口及其实现。 4. **Spring 配置文件:** - 可以选择是否使用 `jaxws:client` 标签,这取决于具体需求。 5. **发布:** - 部署至服务器后,可以通过 URL 访问服务。 #### 三...

    webservice xfire 客户端调用实现

    XFire作为Web服务实现工具,提供了强大的功能,包括自动代码生成、基于注解的配置、以及与Spring框架的良好集成。 在XFire客户端调用实现中,首先需要获取到Web服务的WSDL文件,这个文件描述了服务的接口、方法、...

    WebService接口开发与调用

    - 使用适当的注解标记此类为WebService。 - 右键点击`HelloWord.java`文件,选择生成WSDL文件。 ##### 6. 启动Tomcat - 在IntelliJ IDEA中启动配置好的Tomcat服务器。 - 测试WebService接口是否能够被正确发布。 #...

    CFX构建webservice实例,与Spring整合;以及调用https协议的webservice,附带源码,及其证书

    - Spring的依赖注入:利用Spring容器管理CXF服务的生命周期,可以通过注解或XML配置将服务bean注入到其他组件中。 - AOP(面向切面编程):Spring AOP可以用于实现事务管理、日志记录等跨切面关注点。 - 集成...

    webservice,通过spring mybiatis 访问数据库mysql

    在本项目中,我们结合了Spring、MyBatis以及MySQL,构建了一个能够通过WebService接口访问数据库的应用。下面将详细阐述这些技术及其整合过程。 1. **Spring框架**: Spring是一个全面的Java企业级应用开发框架,...

    webservice+spring的一个小例子

    服务端可能包含一个`@WebService`注解的接口和对应的实现类,而客户端则会有一个`Service`类,通过`wsimport`工具生成,用于实例化并调用服务。 在实际应用中,Spring框架的其他特性也可以与Webservice集成,例如...

Global site tag (gtag.js) - Google Analytics