SSH+Xfire+Proxool开发框架整合(一) 带图

本文详细介绍了使用SSH+xfire+proxool进行开发框架搭建的过程,包括环境配置、类实现、配置文件编写及运行结果展示。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

          最近由于项目的需要一直忙于回顾j2ee的相关内容,因为做安卓时间已久,之前会的那点j2ee的知识早就忘了个精光,好在基础打的牢现在回顾起来还不算很困难。下面就来总结一下webservices常见的开发框架搭建流程: 开发环境MyEclipse 8.5

         这里介绍基于xfrie1.2.6实现的webservices,其中整合了sping2.0 、hibernate3.0和struts1.1等流行框架。熟悉xfire的程序员都知道xfire和sping的整合经常用的有两种结合方式,下面会有具体的介绍。这里先说说基本框架的搭建吧直接上图了

       1、新建项目 选择 web service  project

  

2、选则Next

  















     以上就是搭建xfire 、spring和hibernate,添加struts的配置包也是用的MyEclipse自带的,很简单,一路next 这里就不在给图了。这样搭建完成以后你会发现项目lib文件夹下有些相同的jar包会有多个版本,这样你只需要保留一个最新版本号就可以了。因为相同的jar包多个版本同时存在的话容易引起包冲突。这里不建议用这种方法来搭建开发环境,如果自己以前有SSH方面的项目,还是直接把里面的jar包拿来用吧,MyEclipse  自带的方式添加很容易引起不必要的麻烦。


2、以上我们已经成功搭建了SSH+Xfire的开发环境,只是有些配置文件可能需要我们在开发的过程中来完善。接下来我们如果需要proxool连接池的话还需要导入两个包文件proxool-0.8.3.jar、proxool-cglib.jar 。

  

这是整个框架搭建完成后的样子。


3、具体的实现类

   1)、LoginAction.java 代码如下

 public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
return super.execute(mapping, form, request, response);
}
}

  2)、LoginActionForm.java 代码如下:

/**
 * @author Superfy
 *
 */
public class LoginActionForm extends ActionForm {
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

3)、ILoginDAO.java   开发的访问接口

public interface ILoginDAO {
public boolean login(String username, String userpwd);
}

LoginDAOImpl.java  接口的具体实现

public class LoginDAOImpl extends HibernateDaoSupport implements ILoginDAO {
public boolean login(String username, String userpwd) {
boolean flag = false;
String hql = "FROM User AS u WHERE u.username=? AND u.userpwd=?";
Query q = super.getSession().createQuery(hql);
q.setString(0, username);
q.setString(1, userpwd);
List all = q.list();
if (all.size() > 0) {
flag = true;
//SysUsers t = (SysUsers) all.get(0);
}
return flag;
}
}

4)、User.java   定义了三个成员变量,get,set方法自己生成吧这里不在贴了

             private Integer id;
private String userpwd;
private String username;

User.hbm.xml   Hibernate的映射文件

<hibernate-mapping>

    <class name="com.easylife.model.User" table="user" catalog="easylife">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="userpwd" type="java.lang.String">
            <column name="userpwd" length="20" />
        </property>
        <property name="username" type="java.lang.String">
            <column name="username" length="20" />
        </property>
    </class>
</hibernate-mapping>

下面看一下几个配置文件的写法:

applicationContext.xml

<beans>
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
<!--
   spring 主要来完成三件事 :
   1、利用数据库连接池来配置数据源。
   2、声明Hibernate的事物,并把事物注入到逻辑对象
   3、如何集成sturts,要将逻辑对象注入到action中
-->
<bean name="/login" class="com.easylife.action.LoginAction"></bean>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
        value="org.logicalcobwebs.proxool.ProxoolDriver" />
    <property name="url" value="proxool.dbs" />
</bean>


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<!--加载tomcat的时候进行自动创建表,不加默认不会创建-->
<!--<prop key="hibernate.hbm2ddl.auto">create</prop>
-->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
<prop key="hibernate.connection.release_mode">after_statement</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/easylife/model/User.hbm.xml</value></list>
</property>
</bean>

<bean id="LoginDAOImpl" class="com.easylife.dao.LoginDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>


<bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler" />

<bean name="ILoginDAO" class="org.codehaus.xfire.spring.ServiceBean">
<property name="serviceBean" ref="LoginDAOImpl" />
<property name="serviceClass" value="com.easylife.dao.ILoginDAO" />
<property name="inHandlers">
<list>
<ref bean="addressingHandler" />
</list>
</property>
</bean>
<!-- end -->
</beans>


proxool.xml 文件的配置  ,详细的标签含义这里不在给出,不清楚的自己google吧

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  <proxool>
    <alias>dbs</alias>
    <driver-url>jdbc:mysql://localhost:3306/easylife</driver-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <driver-properties>
      <property name="user" value="root"/>
      <property name="password" value="admin"/>
      <property name="useUnicode" value="true" />
            <property name="characterEncoding" value="UTF-8" />
    </driver-properties>
    <maximum-connection-count>100</maximum-connection-count>
    <minimum-connection-count>10</minimum-connection-count>
    <house-keeping-sleep-time>90000</house-keeping-sleep-time>
    <maximum-new-connections>10</maximum-new-connections>
    <prototype-count>5</prototype-count>
    <test-before-use>true</test-before-use>
    <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
  </proxool>
</something-else-entirely>

紧接着 struts-config.xml 文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.easylife.actionform.LoginActionForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/login" forward="/successful.jsp" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" name="loginForm"></action>
</action-mappings>
<message-resources parameter="com.ekfq.struts.ApplicationResources" />
</struts-config>

最后也是最容易出错的地方web.xml 的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!--连接池proxool服务配置 start-->
 <servlet>
    <servlet-name>ServletConfigurator</servlet-name>
    <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
    <init-param>
      <param-name>xmlFile</param-name>
      <param-value>/WEB-INF/classes/proxool.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
   <!--观察连接池proxool 管理信息,可以不用加载-->
   <servlet>
    <servlet-name>Admin</servlet-name>
    <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
  </servlet>
 <servlet-mapping>
    <servlet-name>Admin</servlet-name>
    <url-pattern>/admin</url-pattern>
  </servlet-mapping>
  <!--连接池proxool服务配置 end-->
  
  <!--spring服务配置 start-->
  <servlet>
    <servlet-name>contextConfigLocation</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <!--spring服务配置 end-->
 
  <!--初始化系统配置文件 start-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>
  
  <!--初始化系统配置文件 end-->
  <!--struts 的配置 start-->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
   <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
   <!--struts 的配置 end-->
   
    <!--xfire 和 sping 的结合  -->
   <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class> 
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
   <!--xfire 和 sping 的结合  end-->
</web-app>

看一下运行结果:


到此 SSH+xfire+proxool的开发框架已基本搭建完成,当然了这只是spring和xfire结合方式中的一种配置,下一篇我会介绍另外一种配置的实现方式,敬请期待吧!!!

第一次发帖,有不对的地方还望指出!!!


 

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

内容概要:本文围绕“考虑电能交互的冷热电区域多微网系统双层多场景协同优化配置”的Matlab代码实现展开,提出种结合电能交互机制的双层优化模型,用于解决冷、热、电多能耦合背景下多微网系统的协同规划与运行问题。研究采用多场景分析方法应对可再生能源出力与负荷需求的不确定性,通过上层规划设备容量配置与下层优化多时段运行策略的联动,提升系统在复杂环境下的经济性、鲁棒性与能源利用效率。所提供的Matlab代码集成了建模、求解(如YALMIP+CPLEX)与结果可视化全流程,涵盖场景生成与削减、双层优化结构设计及多能流协同调度等关键技术环节,为综合能源系统优化提供了完整的算法实现与技术参考。; 适合人群:具备电力系统、综合能源系统或优化建模背景,熟悉Matlab编程与数学规划方法,正在从事相关领域科研或工程设计工作的研究生、高校研究人员及能源行业技术人员。; 使用场景及目标:①开展冷热电联供(CCHP)多微网系统的容量规划与运行优化研究;②支撑含分布式能源、储能及多能转换设备的综合能源系统多目标、多场景优化建模;③学习与复现双层优化、分布鲁棒优化及场景分析等先进优化方法在能源系统中的实际应用。; 阅读建议:建议结合配套文献与代码同步研读,重点理解双层模型的构建逻辑、变量耦合关系与求解技巧,关注场景生成方法与YALMIP调用细节,通过调整参数、修改目标函数等方式进行仿真实验,以深化对系统优化机理的掌握。
内容概要:本文系统研究了单相逆变器闭环控制下的PWM调制模型,基于Simulink平台构建完整的逆变电路仿真系统,涵盖主电路拓扑、闭环控制器设计、脉宽调制信号生成及输出滤波等关键环节。通过引入比例积分(PI)反馈控制策略,实现对输出电压幅值与波形的精确调节,有效抑制负载扰动来的影响,提升系统的动态响应能力与稳态精度。仿真过程详细展示了系统建模、参数整定及性能验证的全流程,重点分析了闭环控制在改善输出正弦波质量、降低谐波畸变率方面的优势,为电力电子逆变装置的研发与优化提供了可靠的理论支撑与实践参考。; 适合人群:具备电力电子技术、自动控制原理基础知识及相关仿真经验的高校研究生、科研人员,以及从事新能源发电、不间断电源(UPS)、微电网、电动汽车等领域的工程技术人员。; 使用场景及目标:①掌握单相逆变器闭环控制系统的设计与建模方法;②深入理解PWM技术与反馈控制在逆变系统中的协同工作机制;③通过Simulink仿真平台完成系统搭建与参数调试,服务于课程设计、毕业课题、科研项目或工业产品开发中的逆变器控制算法验证。; 阅读建议:建议结合经典控制理论与电力电子变换技术同步学习,动手复现仿真模型并尝试调整PI控制器参数、载波频率等关键变量,观察其对系统稳定性与输出性能的影响,从而深化对控制机理的理解,并为进步研究并网逆变、多电平逆变等复杂系统打下坚实基础。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值