`

xFire+Spring练手

阅读更多

 

1、下载xFire:

xfire-distribution-1.2.6.zip

包含了api 手册、例子、相关jar等。

下载地址 http://xfire.codehaus.org/Download

 

2、新建一个web项目,然后创建2个java文件:

注意,必须使用接口。

 

HelloImpl.java:

package test;

import java.util.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.codehaus.xfire.transport.http.XFireServletController;
import org.json.JSONException;
import org.json.JSONStringer;

public class HelloImpl implements IHello {

	public String hello() {
		return "hello";
	}

	public String helloTo(String name) {
		return " hello " + name + "!";
	}

	private void example() {
		// 使用session
		HttpServletRequest request = XFireServletController.getRequest();
		HttpSession session = request.getSession();
	}

	public String getJsonData(String pageIndex, String pageSize) {
		String rtnValue = "";

		rtnValue = "";
		for (int i = 0; i < Integer.parseInt(pageSize); i++) {
			rtnValue = rtnValue + "{'lastname': 'last" + pageIndex + "-" + i
					+ "', 'firstname': 'first" + pageIndex + "-" + i + "' },";
		}
		rtnValue = rtnValue + "{'lastname': 'last', 'firstname': 'last' }";

		rtnValue = "{'context':["
				+ rtnValue
				+ "],'pager':[{'totalRecord':'100','totalpage':'10','pageIndex':'"
				+ pageIndex + "','pageSize':'10'}]}";

		return rtnValue;
	}
}

 

IHello.java:

package test;

public interface IHello {
	public String hello();

	public String helloTo(String name);

	public String getJsonData(String pageIndex, String pageSize);
}	
 

 

3、解压缩xfire-distribution-1.2.6.zip,把xfire-1.2.6\modules\*.jar 、xfire-1.2.6\lib\*.jar拷贝到项目的lib文件夹下;

 

4、创建配置文件:

新建WEB-INF/applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">






<beans>
	<bean id="testBean" class="test.HelloImpl"></bean>
</beans>

 xfire使用spring1.2.6,注意此处xml定义。

 

修改WEB-INF/web.xml,增加如下内容:

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
		WEB-INF/applicationContext*.xml,
		classpath:org/codehaus/xfire/spring/xfire.xml





		</param-value>
	</context-param>


	<!-- 启动时加载SpringContextServlet -->
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<listener>
		<listener-class>
			org.springframework.web.util.IntrospectorCleanupListener
		</listener-class>
	</listener>


	<!-- XFire 配置 -->
	<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>*.ws</url-pattern>
	</servlet-mapping>

 注意红色部分,必须填写。

 

新建WEB-INF/xfire-servlet.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
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="urlMap">
			<map>
				<entry key="/testService.ws">
					<ref bean="test" />
				</entry>
			</map>
		</property>
	</bean>

	<bean id="test" parent="webService"
		class="org.codehaus.xfire.spring.remoting.XFireExporter">
		<property name="serviceBean">
			<ref bean="testBean" />
		</property>
		<property name="serviceClass">
			<value>test.IHello</value>
		</property>
	</bean>

	<!-- webService base -->
	<bean id="webService"
		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>
</beans>
 

 

 

5、

启动服务,访问:http://localhost:8080/xxx/testService.ws?wsdl

可以看到wsdl页面。

 

6、客户端调用:

package client;

import java.net.MalformedURLException;
import java.net.URL;

import org.codehaus.xfire.client.Client;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Test().say();
	}

	public void say() {
		Client client;
		try {
			client = new Client(new URL(
					"http://localhost:8080/xFire/testService.ws?wsdl"));
			// 第一个参数是方法名,后面的参数是需要传入的参数
			Object[] results = client.invoke("helloTo",
					new Object[] { "xxxxxx" });
			System.out.println((String) results[0]);
			
			results = client.invoke("getJsonData",
					new Object[] { "2","3" });
			System.out.println((String) results[0]);
			
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
 

 

总结:

实用xfire必须基于接口编成。

xfire使用spring1.2.6,注意bean配置文件声明,没有特殊要求最好不要升级spring版本。

 

 

问题:

1、如何使用spring2.0整合xfire;

2、xfire客户端依赖那些jar;

3、如何用ant、xfire插件声称客户端

 

 

 

 

 

 

分享到:
评论

相关推荐

    数据库系统学习内容.pptx

    数据库系统学习内容.pptx

    新员工网络培训手册.doc

    新员工网络培训手册.doc

    ABB机器人二次开发C#实现数据读写与点位信息操作

    内容概要:本文详细介绍了如何使用C#语言对ABB机器人进行二次开发,重点讲解了通过C#读取和写入机器人点位信息的方法。文章从引言出发,逐步引导读者进入ABB机器人二次开发的世界,探讨了C#与ABB机器人之间的通信方式,具体展示了读取和写入点位信息的操作方法,并附有简单示例代码。此外,还分享了作者在实践中获得的经验和思考,强调了这一技术对于提升机器人性能、优化工作流程的重要意义。 适合人群:对机器人技术感兴趣的研发人员,尤其是有一定C#编程基础并希望深入了解ABB机器人二次开发的技术爱好者。 使用场景及目标:适用于希望通过C#语言对ABB机器人进行深度定制开发的场景,如工业自动化生产线上的机器人控制、路径规划等。目标是让读者掌握C#与ABB机器人通信的基本原理和技术细节,能够独立完成相关项目的开发。 其他说明:文中提到的具体实现可能会随项目需求和环境配置有所变化,在实际操作时应注意选择合适的通信协议、正确处理数据格式转换及异常情况。

    操作系统课程设计生产者消费者分析解析.doc

    操作系统课程设计生产者消费者分析解析.doc

    文献检索及分析软件PublishorPerish.pptx

    文献检索及分析软件PublishorPerish.pptx

    机器学习中遗传算法优化SVM-SVR参数c和g的技术解析与实现

    内容概要:本文详细介绍了如何利用遗传算法(Genetic Algorithm,GA)优化支持向量回归(Support Vector Regression,SVR)中的两个关键参数——惩罚参数c和核函数参数g。文中不仅解释了遗传算法和SVR的基本概念,还提供了具体的Python代码示例,展示了如何设置参数范围、定义适应度函数以及执行优化过程。此外,作者强调了该方法的简易性和实用性,指出只需替换数据即可快速上手。整个程序专为Windows系统设计,由作者本人编写,确保高质量和稳定运行。 适合人群:对机器学习有一定了解的研究人员和技术爱好者,尤其是那些希望通过遗传算法优化SVR参数的人。 使用场景及目标:① 需要在Windows环境下进行SVR参数优化的研究项目;② 希望通过遗传算法提高SVR模型性能的实际应用场景。 其他说明:本文提供的代码和方法是由在读博士生亲自研究并编写,区别于网上的通用教程,具有更高的实用价值和独特性。

    欧姆龙PLC NJ系列控制EtherCat总线驱动下的复杂电池生产线伺服控制系统。借助EtherCat连接众多终端及扫视枪的PLC集成自动化程序设计实践案例解析。

    内容概要:本文深入解析了欧姆龙NJ系列PLC通过EtherCat总线控制24个伺服轴的锂电池生产线自动化程序。主要内容涵盖PLC与威纶通触摸屏的配合使用,以及通过EtherCat总线连接多个伺服轴、扫描枪和远程IO终端的具体实现方法。文中详细介绍了伺服轴控制函数块(FB)的设计与调优,特别是针对不同机械特性的参数调整。同时探讨了扫描枪通信处理、远程IO站管理和触摸屏交互逻辑的最佳实践,强调了良好的注释习惯对维护和故障排除的重要性。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是有PLC编程经验并对EtherCat总线有一定了解的专业人士。 使用场景及目标:适用于构建和优化复杂的工业自动化生产线,特别是涉及多轴运动控制的应用场景。目标是提高系统的稳定性和灵活性,确保各组件之间的高效协作。 其他说明:文章提供了大量实用的技术细节和调试技巧,如轴控函数块的参数设置、扫描枪通信校验、远程IO站的状态管理以及触摸屏交互逻辑的优化。此外,还强调了注释对于系统维护的重要意义。

    新编中文visualfoxpro61.0实用教程.pptx

    新编中文visualfoxpro61.0实用教程.pptx

    口袋妖怪:白金光.zip

    口袋妖怪:白金光.zip

    新理念外语网络教学平台第二版综合答案解析B2U6E.doc

    新理念外语网络教学平台第二版综合答案解析B2U6E.doc

    基于LabVIEW与西门子PLC Smart 200的工业自动化温度压力控制系统

    内容概要:本文详细介绍了一个完整的工业自动化控制项目,涵盖了LabVIEW编程、西门子PLC Smart 200编程、OPC通讯及串口通讯技术的应用。项目硬件部分由研华工控机、西门子PLC Smart 200、三台检测仪器和扫描枪组成。软件方面,LabVIEW程序负责主界面设计、数据采集与处理、温度和压力曲线的绘制与展示,同时通过OPC协议与PLC进行通讯;PLC程序则负责接收指令、控制仪器参数设置及与仪器和扫描枪的串口通讯。此外,文中还提供了详细的电气原理图、元器件清单、程序注释和调试记录,确保系统的稳定性和可靠性。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对LabVIEW和PLC编程有一定基础的人群。 使用场景及目标:适用于需要实现温度、压力控制及数据监控的工业应用场景,如制造业、化工行业等。目标是帮助工程师快速掌握LabVIEW与PLC的联合应用,提高工业控制系统的开发效率。 其他说明:本文提供的项目资料为虚构内容,实际项目开发时需根据具体需求调整设计方案。

    无线网络技术.pptx

    无线网络技术.pptx

    西门子PLC动态密码程序解析:适用于1200与1500PLC的SCL编写催款程序及动态密保

    内容概要:本文详细介绍了西门子PLC动态密码程序的设计与实现,特别针对1200PLC和1500PLC型号。该程序主要用于催款业务场景,采用了SCL(结构化控制语言)进行编写,提供了动态密保功能,增强了系统安全性和用户账户的保密性。文章从程序的编写思路、操作步骤到实际应用场景进行了全面解析,强调了其在提升工作效率、减少人为错误以及保障企业信息安全方面的优势。文中还提到,该程序具有高度的通用性和灵活性,适用于不同的业务需求,并配有详细的视频讲解,帮助用户更好地理解和操作。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是熟悉或希望深入了解西门子PLC编程的人士。 使用场景及目标:①需要在工业控制系统中实施催款程序的企业;②希望通过增强动态密保功能提升系统安全性的企业;③希望掌握SCL编程技巧并应用于实际项目中的技术人员。 其他说明:该程序不仅提升了系统的安全性和可靠性,还在效率和准确性方面表现出色,为企业带来了更多商业机会和发展空间。

    200smart电机控制程序:三相异步电动机多状态控制与操作详解 (05月23日)

    内容概要:本文详细介绍了200smart电机控制程序的设计与实现,重点讲述了如何通过发送不同的控制字来控制三相异步电动机的六种状态(停止、正转、反转、加速、减速和复位)。这些状态被封装在子程序中,便于调用。文中还提供了一个详细的视频教程,帮助用户更好地理解和应用这些控制方法。此外,文章讨论了变频控制的具体实现方式及其重要性。 适合人群:对电机控制有一定兴趣并希望深入了解200smart电机控制程序的技术人员和开发者。 使用场景及目标:适用于需要精确控制三相异步电动机的应用场合,如工业自动化生产线、机器人等领域。目标是提高电机控制的精度和效率,简化程序调用流程。 阅读建议:建议读者结合提供的视频教程进行学习,以便更直观地掌握电机控制程序的编写和调试技巧。

    无线网络覆盖专项方案.docx

    无线网络覆盖专项方案.docx

    无线支付变革移动互联网.pptx

    无线支付变革移动互联网.pptx

    新版与HIS接口解决方案.doc

    新版与HIS接口解决方案.doc

    COMSOL动态采空区三带模拟与动网格应用 (05月23日)

    内容概要:本文详细介绍了利用COMSOL软件进行采空区三带(冒落带、裂隙带和弯曲带)动态变化的模拟方法和技术要点。重点讲解了动网格技术的应用,包括变形几何接口、位移函数设定、孔隙度变化模拟以及自适应时间步长器的配置。文中还分享了作者在实际项目中遇到的问题及解决方案,如网格质量控制、应变阈值调整、材料本构模型优化等,并强调了可视化展示技巧对成果汇报的重要性。 适合人群:从事矿山安全评估、地质工程研究的专业技术人员,以及对COMSOL仿真感兴趣的科研工作者。 使用场景及目标:适用于需要精确模拟地下采空区动态变化的研究项目,旨在提高矿山开采安全性评价的准确性,为工程决策提供科学依据。 其他说明:文章不仅提供了理论指导,还结合具体案例分享了许多实用的经验教训,有助于读者避免常见错误并提升模拟效率。

    施耐德ATV71变频器原理图纸:深入了解电路结构、控制原理及维修指导

    内容概要:本文详细介绍了施耐德ATV71变频器的原厂纸质原理图纸,探讨了其电路结构、控制原理及其在维修和调试中的应用。首先,通过对变频器背景的介绍,强调了其在工业自动化领域的重要性。接着,文章具体分析了施耐德ATV71变频器的电路结构,包括电源电路、主电路和控制电路三大组成部分,并解释了各部分的工作原理。随后,重点讨论了变频器的控制原理,特别是数字控制技术和模糊控制技术的应用。最后,阐述了这些原理图纸的实际应用价值,特别是在维修和调试方面的指导意义。 适合人群:从事工业自动化领域的技术人员、维修工程师、研究人员。 使用场景及目标:帮助读者深入了解变频器的工作机制,提升维修和调试能力,优化工业自动化系统的性能。 其他说明:本文不仅提供了理论知识,还结合实际应用场景,使读者能够在实践中更好地理解和运用这些原理。

Global site tag (gtag.js) - Google Analytics