现在的位置: 首页 > 综合 > 正文

WebService开发实例 (Xfire+Spring+Hibernate)

2017年08月23日 ⁄ 综合 ⁄ 共 7587字 ⁄ 字号 评论关闭

请注意,需要下载Xfire1.2.6
spring2.0,hibernate 3.0
相关类库及相关数据库的jdbc
驱动。本文相关内容是在myeclipse5.1
下完成。

 

一、
          



首先在web.xml
中添加对xfire
spring
支持的相关内容,如下:



 

<?
xml
version
=

"1.0"
encoding
=

"ISO-8859-1"
?>


 

<!
DOCTYPE
web-app


   

PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"


   

"http://java.sun.com/dtd/web-app_2_3.dtd"
>


<
web-app
>


<!-- START SNIPPET: xfire -->


<
context-param
>

<!


xfire
spring
相关配置文件位置 -->


 

       


<
param-name
>
contextConfigLocation

</
param-name
>


       


<
param-value
>
/WEB-INF/applicationContext.xml
 


       
classpath:org/codehaus/xfire/spring/xfire.xml


</
param-value
>


   


</
context-param
>


 

   


<
context-param
>


       


<
param-name
>
log4jConfigLocation

</
param-name
>


       


<
param-value
>
/WEB-INF/log4j.properties

</
param-value
>


   


</
context-param
>


   



   


<
context-param
>


       


<
param-name
>
webAppRootKey

</
param-name
>


       


<
param-value
>
webservicetest.root

</
param-value
>


   


</
context-param
>


 

 

   
 


<
filter
>


       


<
filter-name
>
sessionFilter

</
filter-name
>


       


<
filter-class
>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

</
filter-class
>


   


</
filter
>
  



   


<
filter-mapping
>


       


<
filter-name
>
sessionFilter

</
filter-name
>


       


<
url-pattern
>
/services/*

</
url-pattern
>


   


</
filter-mapping
>
       



      



   


<
listener
>


       


<
listener-class
>
org.springframework.web.util.Log4jConfigListener

</
listener-class
>


   


</
listener
>


 

   


<
listener
>


       


<
listener-class
>
org.springframework.web.context.ContextLoaderListener

</
listener-class
>


   


</
listener
>
   



     



    


<
servlet
>


       


<
servlet-name
>
xfire

</
servlet-name
>


       


<
servlet-class
>
org.springframework.web.servlet.DispatcherServlet

</
servlet-class
>


   


</
servlet
>


  



 

   


<
servlet-mapping
>


       


<
servlet-name
>
xfire

</
servlet-name
>


       


<
url-pattern
>
/services/*

</
url-pattern
>


   


</
servlet-mapping
>
      



   



<!-- END SNIPPET: xfire -->


</
web-app
>

 

二、
          



applicationContext.xml

文件内容:



<?
xml
version
=

"1.0"
encoding
=

"UTF-8"
?>


<!
DOCTYPE
beans
PUBLIC
"-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd"
>


<
beans
>



 

<!-- 数据库连接配置
-->


   


<
bean
id
=

"propertyConfigurer"
class
=

"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>



   



       


<
property
name
=

"location"
value
=

"/WEB-INF/jdbc_connect.properties"
/>


       



   


</
bean
>


       



   


<!-- C3P0
连接池配置 -->


   



   


<
bean
id
=

"dataSource"
class
=

"com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method
=

"close"
>
    



       



       


<
property
name
=

"driverClass"
value
=

"${jdbc.driverClassName}"
/>


       


<
property
name
=

"jdbcUrl"
value
=

"${jdbc.url}"
/>


       


<
property
name
=

"user"
value
=

"${jdbc.username}"
/>


       


<
property
name
=

"password"
value
=

"${jdbc.password}"
/>


       



       


<
property
name
=

"initialPoolSize"
>


           


<
value
>
5

</
value
>


       


</
property
>


     
  


<
property
name
=

"minPoolSize"
>


     
      


<
value
>
5

</
value
>


     
  


</
property
>


     
  


<
property
name
=

"maxPoolSize"
>


     
      


<
value
>
10

</
value
>


     
  


</
property
>


     
  


<
property
name
=

"acquireIncrement"
>


     
      


<
value
>
2

</
value
>


     
  


</
property
>


     
  


<
property
name
=

"maxIdleTime"
>


     
      


<
value
>
60

</
value
>


     
  


</
property
>


     
  


<
property
name
=

"maxStatements"
>


     
      


<
value
>
0

</
value
>


     
  


</
property
>
    



   


</
bean
>



   


<!-- C3P0
结束 -->


   



   


<
bean
id
=

"sessionFactory"
class
=

"org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>


       


<
property
name
=

"dataSource"
ref
=

"dataSource"
/>


       


<
property
name
=

"mappingResources"
>


           


<
list
>


           


<!


hibernate
hbm
文件位置 ,至于hbm文件可以通过工具生成,这里就不详述了-->


               


<
value
>
com/dao/emp.hbm.xml

</
value
>
             



           


</
list
>


       


</
property
>


       


<
property
name
=

"hibernateProperties"
>


           


<
props
>


               


<
prop
key
=

"hibernate.dialect"
>
${hibernate.dialect}

</
prop
>
      



               


<
prop
key
=

"hibernate.show_sql"
>
true

</
prop
>
                 



           
 
  


<
prop
key
=

"hibernate.jdbc.fetch_size"
>
100

</
prop
>



               


<
prop
key
=

"hibernate.jdbc.batch_size"
>
50

</
prop
>



           
   


<
prop
key
=

"hibernate.use_outer_join"
>
true

</
prop
>
              



               


<
prop
key
=

"hibernate.connection.SetBigStringTryClob"
>
true

</
prop
>


           


</
props
>
           



       


</
property
>


       



       


<
property
name
=

"eventListeners"
>


           


<
map
>


               


<
entry
key
=

"merge"
>


                   


<
bean
class
=

"org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"
/>


               


</
entry
>


           


</
map
>


       


</
property
>


   



   


</
bean
>


   



   



   



   


<
bean
id
=

"transactionManager"
class
=

"org.springframework.orm.hibernate3.HibernateTransactionManager"
>


       


<
property
name
=

"sessionFactory"
ref
=

"sessionFactory"
/>


   


</
bean
>


   



   


<
bean
id
=

"QueryHib"
class
=

"Hello.HelloworldImpl "
>


       


<
property
name
=

"sessionFactory"
ref
=

"sessionFactory"
/>


   


</
bean
>


   
 



   



   


<!


webservice
bean
-->


   



   


<
bean
id
=

"QueryHibRis"
class
=

"org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
>


       


<
property
name
=

"transactionManager"
ref
=

"transactionManager"
/>


       


<
property
name
=

"target"
ref
=

"QueryHib"
/>


       


<
property
name
=

"transactionAttributes"
>


           


<
props
>
        



           


<
prop
key
=

"*"
>
PROPAGATION_REQUIRED

</
prop
>
                  



           


</
props
>


       


</
property
>


   


</
bean
>



   



</
beans
>

 

<!-- jdbc_connect.properties
文件内容,
主要是数据库配置,
以下是oracle
数据库 -->


 

jdbc.driverClassName=

oracle.jdbc.driver.OracleDriver


jdbc.url=

jdbc
:

oracle:thin:@172.17.99.230:1521:bsrun


jdbc.username=

user


jdbc.password=

user


hibernate.dialect=

org.hibernate.dialect.Oracle9Dialect

 

三、
          



xfire-servlet.xml

文件内容,
如下:


<?
xml
version
=

"1.0"
encoding
=

"UTF-8"
?>


<!
DOCTYPE
beans
PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd" 

>


 

<
beans
>


   


<!-- START SNIPPET: xfire -->


   


<
bean
class
=

"org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
>


       


<
property
name
=

"urlMap"
>


           


<
map
>


               


<
entry
key
=

"/QueryService"
>


                   


<
ref
bean
=

"query"
/>


               


</
entry
>
 
 



            


</
map
>


       


</
property
>


       



   


</
bean
>


   



   


<!-- Declare a parent bean with all properties common to both services -->


   


<
bean
id
=

"query"
class
=

"org.codehaus.xfire.spring.remoting.XFireExporter"
>


       


<
property
name
=

"serviceFactory"
>


           


<
ref
bean
=

"xfire.serviceFactory"
/>


       


</
property
>


       


<
property
name
=

"xfire"
>


           


<
ref
bean
=

"xfire"
/>


       


</
property
>


       


<
property
name
=

"serviceBean"
>


           


<
ref
bean
=

"QueryHibRis"
/>
 
<!



请注意这个需在applicationContext.xml
有定义-->


 

       


</
property
>


       


<
property
name
=

"serviceClass"
>


           


<
value
>
Hello
.

IHelloworld
</
value
>


       


</
property
>



       



   


</
bean
>
  



   


<!-- END SNIPPET: xfire -->


</
beans
>

 

四、Hello.HelloworldImpl
类内容,主要是查询数据库并返回结果


 

package Hello;

 

 


import java.util.Collection;

 

//Generated by MyEclipse

 

public class HelloworldImpl implements IHelloworld {

   


   
public Collection User(){  


   


return getHibernateTemplate().find("

select new Helloworld.User(userid,username
) from emp");

 


       
 
      


   
}


   


}

 

IHelloworld
接口内容


package Hello;

//Generated by MyEclipse

 

import java.util.Collection;

 


 

public interface IHelloworld {

   


   
public Collection User();


}

//xfire
对于返回collection
的,需要定义接口的IHelloworld.aegis.xml
文件,
需放在当前接口文件目录下。


 

<?xml version="1.0" encoding="UTF-8"?>

 
<mappings>


   
<mapping>


       
<method name= "User" >


           
<return-type componentType= "Helloworld.User" />          


       
</method>         


       


   
</mapping>   


   


</mappings>

 

Helloworld.User
类内容:





package Helloworld;

 

public class User {

   


   
String userid;


   
String username;


//
一定要定义此构造函数,在Hello.HelloworldImpl中有用到哟





   
Public User(String userid,String username){


       
this.userid = userid;


this.username = username;

 

}  


 

   
public String getUserid() {


       
return userid;


   
}


   
public void setUserid(String userid) {


       
this.userid = userid;


   
}


   
public String getUsername() {


       
return username;


   
}


   
public void setUsername(String username) {


       
this.username = username;


   
}


 

}

 

完结,以上代码是我在实际应用中改编而成,都经过测试,肯定好用。

转自:http://blog.csdn.net/caok/archive/2008/12/29/3637734.aspx



 

抱歉!评论已关闭.