tomcat下搭建简单的xfire web services项目
xfire简介
支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor;
支持基于HTTP、JMS、XMPP等多种协议访问Web服务;
支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等;
支持JSR181,可以通过JDK5配置Web服务;
高性能的SOAP实现;
服务器端、客户端代码辅助生成;
对Spring、Pico、Plexus等项目的支持等。
Xfire服务器搭建
基础架包
1. XFire-all-1.2.6.jar
XFire框架的二进制包文件,包含了全部的模块(modules)
2. commons-logging.jar
Apache Commons包中的一个,包含了日志功能。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的 java.util.logging,如果也找不到就用Simple Logger。
commons-logging.jar的出现是一个历史的的遗留的遗憾,当初Apache极力游说Sun把 log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。
后来Apache就开发出来了commons-logging.jar用来兼容两个 logger。因此用commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择 log4j,java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j,因为log4j性能很高,log输出信息时间几乎等于System.out,而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件,你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。
3. jdom-1.0.jar
解析xml文件
4.spring-1.2.6.jar
spring核心包
5.wsdl4j-1.6.1.jar
连接wsdl
6.xbean-spring-2.8.jar
xbean 和 spring 结合所需包
7.ojdbc14.jar
连接数据库
编写接口
package dao;
public interface Bank {
String OperateMoney(String card,double total);
}
编写实现类
package dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import dao.Bank;
import dao.BaseDao;
public class BankImpl implements Bank {
@Override
public String OperateMoney(String card, double total) {
String info = "";
if(1 == update(card, total)){
info = "success";
}else{
info = "false";
}
return info;
}
private int update(String card, double total){
Connection con = BaseDao.getConnection();
String sql = "update bank_card set total = total + ? where card = ? ";
int row = 0;
entity.Bank bank = select(card);
if(null != bank){
if((bank.getTotal() + total) > 0){
try {
PreparedStatement pState = con.prepareStatement(sql);
pState.setDouble(1, total);
pState.setString(2, card);
row = pState.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return row;
}
private entity.Bank select(String card){
Connection con = BaseDao.getConnection();
String sql = "select * from bank_card where card = ? ";
ResultSet result = null;
entity.Bank bank = new entity.Bank();
try {
PreparedStatement pState = con.prepareStatement(sql);
pState.setString(1, card);
result = pState.executeQuery();
if(result.next()){
bank.setId(result.getInt(1));
bank.setCard(result.getString(2));
bank.setTotal(result.getDouble(3));
}
} catch (SQLException e) {
e.printStackTrace();
}
return bank;
}
}
建立services.xml文件,需要放在WebContent/WEB-INF/classes/META-INF/xfire目录下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>OperateMoney</name>
<namespace>localhost:8080/fifth/</namespace>
<serviceClass>dao.Bank</serviceClass>
<implementationClass>dao.impl.BankImpl</implementationClass>
</service>
</beans>
修改web.xml文件,加入一个servlet
<servlet>
<servlet-name>xFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xFireServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
xfire简介
支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor;
支持基于HTTP、JMS、XMPP等多种协议访问Web服务;
支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等;
支持JSR181,可以通过JDK5配置Web服务;
高性能的SOAP实现;
服务器端、客户端代码辅助生成;
对Spring、Pico、Plexus等项目的支持等。
Xfire服务器搭建
基础架包
1. XFire-all-1.2.6.jar
XFire框架的二进制包文件,包含了全部的模块(modules)
2. commons-logging.jar
Apache Commons包中的一个,包含了日志功能。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的 java.util.logging,如果也找不到就用Simple Logger。
commons-logging.jar的出现是一个历史的的遗留的遗憾,当初Apache极力游说Sun把 log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。
后来Apache就开发出来了commons-logging.jar用来兼容两个 logger。因此用commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择 log4j,java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j,因为log4j性能很高,log输出信息时间几乎等于System.out,而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件,你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。
3. jdom-1.0.jar
解析xml文件
4.spring-1.2.6.jar
spring核心包
5.wsdl4j-1.6.1.jar
连接wsdl
6.xbean-spring-2.8.jar
xbean 和 spring 结合所需包
7.ojdbc14.jar
连接数据库
编写接口
package dao;
public interface Bank {
String OperateMoney(String card,double total);
}
编写实现类
package dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import dao.Bank;
import dao.BaseDao;
public class BankImpl implements Bank {
@Override
public String OperateMoney(String card, double total) {
String info = "";
if(1 == update(card, total)){
info = "success";
}else{
info = "false";
}
return info;
}
private int update(String card, double total){
Connection con = BaseDao.getConnection();
String sql = "update bank_card set total = total + ? where card = ? ";
int row = 0;
entity.Bank bank = select(card);
if(null != bank){
if((bank.getTotal() + total) > 0){
try {
PreparedStatement pState = con.prepareStatement(sql);
pState.setDouble(1, total);
pState.setString(2, card);
row = pState.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return row;
}
private entity.Bank select(String card){
Connection con = BaseDao.getConnection();
String sql = "select * from bank_card where card = ? ";
ResultSet result = null;
entity.Bank bank = new entity.Bank();
try {
PreparedStatement pState = con.prepareStatement(sql);
pState.setString(1, card);
result = pState.executeQuery();
if(result.next()){
bank.setId(result.getInt(1));
bank.setCard(result.getString(2));
bank.setTotal(result.getDouble(3));
}
} catch (SQLException e) {
e.printStackTrace();
}
return bank;
}
}
建立services.xml文件,需要放在WebContent/WEB-INF/classes/META-INF/xfire目录下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>OperateMoney</name>
<namespace>localhost:8080/fifth/</namespace>
<serviceClass>dao.Bank</serviceClass>
<implementationClass>dao.impl.BankImpl</implementationClass>
</service>
</beans>
修改web.xml文件,加入一个servlet
<servlet>
<servlet-name>xFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xFireServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>