您的位置:首页 > 编程语言 > Java开发

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

2009-10-17 14:40 274 查看
请注意,需要下载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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: