前言:前面一文写完了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的持久层操作就搞定了,舒心啊!
相关推荐
【标题】"用XFire开发WebService+Spring注解"涉及的主要知识点是利用XFire框架创建Web服务,并结合Spring框架的注解进行服务的管理和集成。XFire是一个强大的Java Web Service实现,它允许开发者轻松地创建和消费...
Spring支持基于注解的Web Service发布,如使用`@WebService`和`@WebServiceClient`。你也可以使用Spring-WS或Apache CXF等库来创建WSDL并部署服务。 4. **测试和调试**:确保编写了单元测试来验证Web Service接口的...
在Spring Cloud的环境中,Feign会自动发现服务提供者的位置(通过Eureka、Consul等服务注册与发现组件),并创建一个代理对象来执行这些方法,实现了透明化的远程调用。 除了基本的HTTP请求,Feign还支持更多的特性...
本示例主要关注的是如何使用Java进行WebService调用,这在企业级应用开发中非常常见,特别是在需要跨平台集成时。以下是关于这个主题的一些详细知识点: 1. **WebService的基本概念**: WebService是一种基于开放...
1. **Spring SOAP Web Service**: 使用Spring的`WebServiceTemplate`或JAX-WS的`@WebService`注解创建SOAP服务。服务端通过定义接口和实现类,客户端通过调用这些接口实现数据交互。 2. **Spring配置文件**:XML...
这可以通过创建一个`@WebServiceServer`注解的类完成: ```java // GreetingServerConfig.java import org.apache.cxf.frontend.ServerFactoryBean; import org.springframework.beans.factory.annotation....
同时,Spring框架作为Java应用的基础设施,可以方便地管理对象依赖和提供事务控制。将CXF与Spring整合,可以使Web服务的实现更加优雅和高效。 【描述】:提供的源代码示例是关于如何将CXF和Spring进行集成,以便在...
- **使用Spring自动装配**:通过`@Autowired`注解,可以将CXF客户端注入到需要调用Web Service的类中,实现自动化管理。 5. **手动配置与自动配置**: - **手动配置**:在没有使用Spring Boot或Spring的自动配置...
【WebService版集成Spring的HelloWorld】是一个典型的教程,旨在帮助开发者了解如何在Spring框架中集成和...通过这个过程,你可以学到Spring的配置技巧、WebService的创建和调用,以及如何在实际项目中应用这些技术。
通过JAX-WS,开发者可以方便地定义服务接口,并通过注解来指定服务行为和消息格式。客户端可以使用JAX-WS的Stub类来调用服务。 5. Axis2: Axis2是Apache基金会的一个开源Web服务框架,支持SOAP 1.1和1.2,以及...
在本项目中,注解可能被用于简化配置,例如Spring的@Autowired用于自动装配依赖,@WebService和@WebMethod用于标记WebService接口和方法。 综上所述,这个项目结合了多种技术来构建一个后端服务器,它利用了...
**WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...
综上所述,"webservice + spring + hibernate"的组合使用,旨在构建一个灵活、健壮的分布式系统,其中Web服务提供远程调用能力,Spring提供整体架构支持,而Hibernate则作为数据访问层,确保了数据操作的便捷和高效...
- 在服务端,开发者可以创建一个普通的Java类作为业务逻辑,并使用Spring的`@WebService`注解来标记这个类作为Web服务的实现。然后,通过配置Spring的ApplicationContext,可以将这个服务注册到Axis的Servlet中,...
- 使用适当的注解来定义 WebService 接口及其实现。 4. **Spring 配置文件:** - 可以选择是否使用 `jaxws:client` 标签,这取决于具体需求。 5. **发布:** - 部署至服务器后,可以通过 URL 访问服务。 #### 三...
XFire作为Web服务实现工具,提供了强大的功能,包括自动代码生成、基于注解的配置、以及与Spring框架的良好集成。 在XFire客户端调用实现中,首先需要获取到Web服务的WSDL文件,这个文件描述了服务的接口、方法、...
- 使用适当的注解标记此类为WebService。 - 右键点击`HelloWord.java`文件,选择生成WSDL文件。 ##### 6. 启动Tomcat - 在IntelliJ IDEA中启动配置好的Tomcat服务器。 - 测试WebService接口是否能够被正确发布。 #...
- Spring的依赖注入:利用Spring容器管理CXF服务的生命周期,可以通过注解或XML配置将服务bean注入到其他组件中。 - AOP(面向切面编程):Spring AOP可以用于实现事务管理、日志记录等跨切面关注点。 - 集成...
在本项目中,我们结合了Spring、MyBatis以及MySQL,构建了一个能够通过WebService接口访问数据库的应用。下面将详细阐述这些技术及其整合过程。 1. **Spring框架**: Spring是一个全面的Java企业级应用开发框架,...
服务端可能包含一个`@WebService`注解的接口和对应的实现类,而客户端则会有一个`Service`类,通过`wsimport`工具生成,用于实例化并调用服务。 在实际应用中,Spring框架的其他特性也可以与Webservice集成,例如...