WebService.aegis.xml----关于xfire1.2.6与spring2.0集成服务,而后xfire客户端访问此服务端

ydcsh 2011-09-17 06:46:06
问题是:
客户端调用客户的webservice是成功的(sayHello有返回),而且wsSaveEmergencyConf内前2个参数传递数值也是正确的,
传到服务端list的size也是正确的,但是list内对象属性值全部null(当然,我客户端传值是不为空的)


全部代码如下:

一.xfire1.2.6与spring2.0集成服务端
1.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


<!-- 设置web使用structs框架 beginning -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

<!--Spring configuration-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/conf/spring-config.xml,/web-info/xfire.xml</param-value>
</context-param>

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

<servlet-mapping>
<servlet-name>ConnectorServlet</servlet-name>
<url-pattern>
/fckeditor/editor/filemanager/connectors/*
</url-pattern>
</servlet-mapping>


<!-- 显示首页 -->
<welcome-file-list>
<welcome-file>admin_index.jsp</welcome-file>
</welcome-file-list>

<!-- session time out 800 minutes -->
<session-config>
<session-timeout>800</session-timeout>
</session-config>



<!-- begin XFire 配置 -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

<!-- end XFire 配置 -->


</web-app>




2.xfire.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 引入XFire预配置信息 -->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/MxWebService.ws">
<ref bean="MxWebService"/>
</entry>
</map>
</property>
</bean>
<!-- 使用XFire导出器 -->
<bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
<!-- 引用xfire.xml中定义的工厂 -->
<property name="serviceFactory" ref="xfire.serviceFactory"></property>
<!-- 引用xfire.xml中的xfire实例 -->
<property name="xfire" ref="xfire"></property>
</bean>

<bean id="MxWebService" parent="baseWebService">
<!-- 业务服务bean -->
<property name="serviceBean" ref="mxWebService"></property>
<!-- 业务服务bean的窄接口类 -->
<property name="serviceClass" value="com.myweb.webservice.MxWebService"></property>
</bean>
</beans>


3.spring.cong.xml

<!-- WebService Service -->

<bean id="mxWebService" class="com.myweb.webservice.impl.MxWebServiceImpl" autowire="byType">
<property name="logService">
<ref local="logService" />
</property>
<property name="confService">
<ref local="confService" />
</property>
</bean>



4interface以及实现
4.1接口


@WebService
public interface MxWebService {


@WebMethod
@WebResult
public String sayHello( String name);


@WebMethod
@WebResult
public String wsSaveEmergencyConf(String meetSubject,String meetDesc,List<MeetingPerson> persons);
}




4.2MxWebService.aegis.xml


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

<method name="wsSaveEmergencyConf">

<parameter index="0" componentType="java.lang.String"/>
<parameter index="1" componentType="java.lang.String"/>
<parameter index="2" componentType="com.myweb.bean.conference.MeetingPerson"/>
<return-type
componentType="java.lang.String" />

</method>
</mapping>
</mappings>



4.3

package com.myweb.webservice.impl;

import java.text.DateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

import org.apache.log4j.Logger;

import com.myweb.action.conference.CheckConfExistAction;
import com.myweb.bean.conference.MeetingMain;
import com.myweb.bean.conference.MeetingPerson;
import com.myweb.service.conference.ConferenceService;
import com.myweb.service.log.LogService;
import com.myweb.util.tools.DateUtils;
import com.myweb.webservice.MxWebService;



@WebService(endpointInterface="com.myweb.webservice.MxWebService", serviceName="MxWebService")
public class MxWebServiceImpl implements MxWebService {

// 系统默认序列化ID
private static final long serialVersionUID = 1L;
//log4j日志
private static final Logger logger = Logger.getLogger(MxWebServiceImpl.class);
// 日志服务
private LogService logService;
//会议service
private ConferenceService confService;


@WebMethod
@WebResult
public String sayHello(@WebParam(name="name") String name) {
// TODO Auto-generated method stub
System.out.println("Hello "+name+"!!!");
GregorianCalendar today = new GregorianCalendar();
Date d = today.getTime();
DateFormat df = DateFormat.getDateTimeInstance();
String todaytostring = df.format(d);
return todaytostring+" 輸入:"+name;

}

@WebMethod
@WebResult
public String wsSaveEmergencyConf(String meetSubject,String meetDesc,List<MeetingPerson> persons){

String reVal = "-1";
//desc为语音播报,会议主题,会议id(meetId),电话联系人(姓名-号码)

try {
MeetingMain meet = new MeetingMain();
meet.setMeetSubject(meetSubject);
meet.setMeetDesc(meetDesc);
if(meet!=null&&(meet.getMeetSubject()==null||meet.getMeetSubject().equals(""))){
meet.setMeetSubject(DateUtils.formatDateTime(new Date()));
}

for(int i=0;i<persons.size();i++){
MeetingPerson p = persons.get(i);


System.out.println(p.getPhone());
System.out.println(p.getUserName());
}

//reVal = confService.wsSaveEmergencyConf(meet, persons);

} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
logger.error(e,e);
return reVal;
}

return reVal;
}


public void setLogService(LogService logService) {
this.logService = logService;
}

public void setConfService(ConferenceService confService) {
this.confService = confService;
}


}



二.客户端


package cn.ulink.client;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;


public class UrlInvokeClient {

public static void main(String[] args) {

IMxWebService client = null;
try {
Service serviceModel = new ObjectServiceFactory()
.create(IMxWebService.class);
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);




String serviceUrl = "http://localhost/test/services/MxWebService";

IMxWebService ss = (IMxWebService)new XFireProxyFactory().create(serviceModel, serviceUrl);

client = (IMxWebService)factory.create(serviceModel,
serviceUrl);
//String page = client.sayHello("1234");

MeetingMain meet = new MeetingMain();
meet.setMeetDesc("应急会议召开");
meet.setMeetSubject("asfasdfasd");
//meet.setUserId("12345");

List<MeetingPerson> persons = new ArrayList<MeetingPerson>();

for(int i=0;i<5;i++){
MeetingPerson p = new MeetingPerson();
p.setAnwserTime("name4"+i);
p.setUserName("name4"+i);
p.setPhone("123454"+i);
persons.add(p);

//System.out.println(p.getPhone());
//System.out.println(p.getUserName());
}

String result = client.wsSaveEmergencyConf("阿斯顿法师打发","XX应急会议", persons);

//ss.wsSaveEmergencyConf("阿斯顿法师打发","XX应急会议", persons);

System.out.println("result--------"+result);
//System.out.println("page--------"+page);

} catch (MalformedURLException e) {
e.printStackTrace();
}

/* Client client = null;
try {
client = new Client(new URL("http://172.16.13.50:8081/test/services/MxWebService?wsdl"));
// client = new Client(new URL("http://localhost:8080/helloWorld?wsdl"));

Object[] result1 = client.invoke("sayHello", new Object[] {"222"});

System.out.println(result1);

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}*/

}


}




---------------------------------------------------


请高手们帮帮忙!!!!!!!!!!!!!


...全文
636 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiazimo 2012-09-29
  • 打赏
  • 举报
回复
MeetingPerson 自定义对象要序列化并且要有显性的空构造;
bertni 2012-09-21
  • 打赏
  • 举报
回复
你是否解决了?如何解决的?
ydcsh 2011-09-17
  • 打赏
  • 举报
回复
人呢???回答个

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧