`
suli
  • 浏览: 45572 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

ONJava.com -- Web 服务实现中的概念分离 --> page 2

阅读更多
1, 2, 3, 4

 

业务逻辑的实现与配置

我们从解释业务逻辑类的实现与配置入手,因为它们是最简单的部分。 请从可下载的示例代码部分查看 AccountMgr 接口和 AccountMgrImpl 类的源代码。 从源代码中可以看出,实际上实现没有做任何事,因为我们要保证事务的简单性,毕竟本文的目的不在于如何编写资金转移的代码。

以下是一个 Spring 配置文件的片段(从“资源”部分可获取完整的配置文件),它展示了我们是如何为业务逻辑配置 Spring Bean 以使用 Spring 的 AOP 功能。 第一个 Bean 条目只是单纯地为 AccountMgrImpl 类设置了一个 Bean。 第二个 Bean 条目展示了我们前面讨论的如何利用 AOP 代理。 我们将 Bean ID 设置为 accountMgr,将从 ProxyFactoryBean 获取该 ID。 当 FundsTransferServiceSoapBindingImpl 以该 Bean ID 向 Spring 提出请求时,ProxyFactoryBean 将返回一个 AOP 代理对象实例。 我们对它进行配置以实现 AccountMgr 接口,这样一来,客户端程序就会认为正在与一个业务逻辑对象通信。 对于第二个名为 interceptorNames 的属性,设置它是为了使一个称为 securityInterceptor 的 Bean 可以拦截对方法的调用以执行安全性检查。 如此,我们就在对业务逻辑代码不产生任何依赖性的情况下插入了安全性机制。 最后,我们将 target 属性设置为 accountMgrTarget Bean,这样,方法调用会最终传播到实际的业务逻辑类 AccountMgrImpl 上。

<beans>  <bean id="accountMgrTarget"    class="com.mybank.bizlogic.AccountMgrImpl"/>  . . .  <bean id="accountMgr"    class="org.springframework.aop.framework.    ProxyFactoryBean">    <property name="proxyInterfaces">      <list>        <value>          com.mybank.bizlogic.AccountMgr        </value>      </list>    </property>    <property name="interceptorNames">      <list>        <value>          securityInterceptor        </value>      </list>    </property>    <property name="target">      <ref bean="accountMgrTarget"/>    </property>  </bean>  . . .</beans>

Web 服务的实现和配置

FundsTransferServiceSoapBindingImpl 类就是 Web 服务的实现。 请从“可下载的示例代码”部分查看其源代码。 该类的骨架是由 Axis 生成的,只需填充用于实现的方法。 请注意,该类扩展自 ServletEndpointSupport。 这是 Spring 提供的一个方便的类,它可以用于 JAX-RPC Web服务实现以获取对 Spring 应用程序上下文的引用。 通过扩展该类,FundsTransferServiceSoapBindingImpl 可以访问 Spring 上下文来获取一个对 accountMgr Bean 的引用(上文中已经进行了讨论)。 由于 FundsTransferServiceSoapBindingImpl 由 Axis 管理,我们不能使用 Spring 的依赖性注入功能为该 Bean 自动获取引用。 因此,不得不在 onInit() 方法中明确地获取引用。 不尽人意的是,这在特定于 Spring 的类中添加了一些依赖性。 算了吧,这也是为了可以利用 Spring 和 Acegi 所付出的小小代价。 请注意在实际的 transferFunds() 方法中,该代码只传播给 accountMgr Bean。

在 Axis 配置文件(deploy.wsddserver-config.wsdd) 中,我们需要保证用于实现服务的类是 FundsTransferServiceSoapBindingImpl 类,而不是 Axis 生成的类骨架(FundsTransferServiceSoapBindingSkeleton)。 要使 Spring 在 Axis 等 Web 应用程序中正常工作,我们需要在 web.xml 文件中添加下面的条目。 context-param 指出 Spring 配置文件的位置。 listener 条目的配置,以便 Spring 配置文件及其上下文可以正确地装载和启用。

<web-app>  <context-param>    <param-name>      contextConfigLocation    </param-name>    <param-value>      /WEB-INF/spring-config.xml    </param-value>  </context-param>  <listener>    <listener-class>      org.springframework.web.context.      ContextLoaderListener    </listener-class>  </listener>. . .</web-app>

1, 2, 3, 4

下一页箭头



分享到:
评论

相关推荐

    02-SpringMVC基础及应用

    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;url-pattern&gt;/&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;!-- ... --&gt; &lt;/web-app&gt; ``` 这将告诉...

    Spring MVC3构建Web应用详解

    Spring MVC 是一个强大的Java Web应用程序框架,用于构建高效、模块化的Web应用。在这个教程中,我们将探讨如何使用Spring MVC 3来创建一个简单的Web应用。首先,我们需要建立一个新的Web项目。 1. 创建Web项目: ...

    SpringMVC笔记

    - **IDE**:IntelliJ IDEA 2019.2 - **构建工具**:Maven 3.5.4 - **服务器**:Tomcat 7 - **Spring版本**:5.3.1 2. **创建Maven工程** - **步骤**: - 创建一个新的Maven Web项目。 - 设置打包方式为`war...

    springmvc入门

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt; &lt;servlet&gt; &lt;servlet-name&gt;spmvc&lt;/servlet-name&gt; &lt;servlet-class&gt; org.springframework.web.servlet.DispatcherServlet &lt;/servlet-class&gt; &lt;load-on-...

    简单SpringMVC环境搭建项目代码

    它是一个基于模型-视图-控制器(MVC)设计模式的轻量级Web开发框架,使得开发者能够将业务逻辑、数据访问和用户界面进行分离,提高代码的可维护性和可测试性。 **环境搭建** 1. **Java环境**:首先确保你已经安装...

    SpringMVC搭建

    它提供了模型-视图-控制器(MVC)架构,使开发者能够将业务逻辑、数据处理和用户界面分离,从而实现更清晰、更可维护的代码结构。下面将详细讲解SpringMVC的搭建过程及其相关知识点。 1. **环境准备** 在开始...

    SpringMVC 学习总结

    SpringMVC 主要用于构建 Web 应用程序,并遵循 MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三个部分,从而实现更好的代码结构组织和业务逻辑的清晰分离。 **特点:** 1. **灵活的控制...

    使用springmvc框架编写helloworld,使用eclispe开发工具

    1. **创建项目**:在Eclipse中,选择"File" -&gt; "New" -&gt; "Dynamic Web Project",输入项目名称,例如"SpringMVCHelloWorld",并确保在"Target Runtime"中选择已安装的Apache Tomcat服务器。 2. **添加Spring MVC...

    自定义MVC框架

    - `&lt;%@ page language="java" import="java.util.*" pageEncoding="gbk"%&gt;` 这行代码指定了页面的脚本语言为Java,并导入了`java.util.*`包,同时设置了页面编码为GBK。 - `&lt;% String path=request.getContextPath()...

    springmvc插件

    4. **中文乱码问题**:在 web.xml 中添加 `&lt;filter&gt;` 来设置字符编码过滤器。 #### 七、总结 通过以上步骤,我们可以在 Eclipse 中有效地利用 Spring MVC 插件创建和管理 Web 应用程序。Spring MVC 的强大功能和...

    Struts1的开发过程

    2. 配置`web.xml`:在`web.xml`文件中,你需要配置Struts的前端控制器(Front Controller)`ActionServlet`。这是Struts框架的核心组件,负责处理所有HTTP请求。配置如下: ```xml &lt;servlet&gt; &lt;servlet-name&gt;action...

    Wicket 1.4 开发手记(一) helloworld与环境配置

    2. **分离**:实现真正的视图与代码分离,让视图层更加清晰、易于维护。 3. **灵活性**:开发框架应该提供足够的灵活性,允许开发者根据具体需求调整框架行为,而不是仅仅局限于特定的模式或方法。 4. **高性能*...

    struts2.1的一个最简单应用,myeclipse6.5原码

    Struts2的核心设计目标是简化开发过程,提高代码的可维护性,通过分离业务逻辑、控制流和展示层来实现这一点。 MyEclipse6.5是一个集成开发环境,它是Eclipse的扩展,增加了对Java EE开发的额外支持,包括Web、J2EE...

    用Myeclipse开发JSP(1).docx

    在MyEclipse中,你可以直接右键点击项目,选择“Run As” -&gt; “Run on Server”,选择已配置的Tomcat服务器,来运行你的JSP应用。浏览器将会显示你刚刚创建的动态页面。 继续深入学习JSP,你需要掌握更多概念,如...

    java笔试题.java笔试题.

    12. **Struts框架理解**:Struts是MVC(Model-View-Controller)架构的Java Web框架,它分离了业务逻辑、视图和控制层,提高了代码的可维护性和可扩展性。它使用ActionForm处理用户请求,通过配置文件定义请求路径和...

    handson 教师用书

    综上所述,“Handson 教师用书”覆盖了Java Web开发的多个重要方面,包括基本概念、技术实现细节以及最佳实践。通过这些内容的学习,读者不仅可以获得扎实的理论基础,还能掌握实用的开发技能,非常适合初学者入门及...

    OnlineShop

    &lt;%@ page import="java.sql.*" %&gt; Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM products"); while (rs....

    obs.zip_OBS

    【描述】"this is a java application baed on servelts,jsp ." 描述了这是一个用Java语言开发的Web应用程序,它依赖于Servlets和JSP技术。Servlets是Java平台上的服务器端编程模型,主要用于扩展Web服务器的功能,...

    同学及自己面试题目(java面试准备).doc

    在Java面试中,常常会考察应聘者对基础概念的理解以及实际开发经验。以下是一些常见的Java面试题目及其详细解答: 1. **继承、封装、多态**: - 继承是类与类之间的关系,允许一个类(子类)继承另一个类(父类)...

Global site tag (gtag.js) - Google Analytics