SOA架构实现:Java SOAP Web Service and Delphi 7 Client (3)
Java SOAP Web Service服务端架构搭建
事情远远比你想象的困难,原以为三言两语就可以说清楚,事实证明,比较难。。。
1.看看你的D:/workspace/test/WebRoot/WEB-INF/lib目录下的文件数跟我的一样不一样:
<图片>
注意:mm.mysql.jar是mysql的jdbc驱动,在网上下载一个
c3p0-0.9.1-pre6.jar和c3p0-oracle-thin-extras-0.9.1-pre6.jar是c3p0数据源组件,暂时没用到,你可以不要
2.在Myeclipse中打开WEB-INF目录下的web.xml文件
删除全部字符,用如下替代:
<?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>
<context-param><param-name>webAppRootKey</param-name><param-value>test.root</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>contextConfigLocation</param-name><param-value>/WEB-INF/dataAccessContext.xml,/WEB-INF/applicationContext.xml, classpath:org/codehaus/xfire/spring/xfire.xml</param-value></context-param>
<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>/xfire/*</url-pattern></servlet-mapping>
</web-app>
3.在Myeclipse新建一log4j.properties文件于WEB-INF目录下
内容如下:
log4j.rootLogger=INFO, stdout, logfile
log4j.logger.java.sql.Connection=DEBUG, stdout, logfile
log4j.logger.java.sql.ResultSet=DEBUG stdout, logfile
log4j.logger.java.sql.Statement=DEBUG stdout, logfile
log4j.logger.java.sql.PreparedStatement=DEBUG stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.sql.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${test.root}/WEB-INF/error.log
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
4.在Myeclipse新建一dataAccessContext.xml文件于WEB-INF目录下
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "spring-beans.dtd">
<beans>
<!--Data Source Define -->
<!-- Dbcp DataSource Define -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<!-- -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<!--Spring's Ibatis Template Define -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>/WEB-INF/sqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
</beans>
5.在Myeclipse新建一jdbc.properties文件于WEB-INF目录下
内容如下:
jdbc.driverClassName=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/backup
jdbc.username=root
jdbc.password=
6.在Myeclipse新建一applicationContext.xml文件于WEB-INF目录下
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "spring-beans.dtd">
<beans>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>WEB-INF/jdbc.properties</value>
</list>
</property>
</bean>
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED,-DataAccessException</prop>
<prop key="update*">PROPAGATION_REQUIRED,-DataAccessException</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>
7.在Myeclipse新建一sqlMapConfig.xml文件于WEB-INF目录下
内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxSessions="64"
maxTransactions="8"
maxRequests="128"
useStatementNamespaces="false"/>
</sqlMapConfig>
8.在Myeclipse新建一xfire-servlet.xml文件于WEB-INF目录下
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "spring-beans.dtd">
<beans>
<bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" abstract="true">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory"/>
</property>
<property name="xfire">
<ref bean="xfire"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
</bean>
<bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler"/>
</beans>
下一步可以开始做需求收集和分析了...