ssh整合webservice cxf采用注解的方式+andriod客户端

定义接口和实现类

/**
 * 自定义service接口
 * 
 * @time 9:01:54 PM
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
@WebService
public interface PUserService {
@WebMethod
public String seyHello(@WebParam(name = "name")
String name);


@WebMethod
public String saveUser(@WebParam(name = "email")
String email, @WebParam(name = "nickName")
String nickName, @WebParam(name = "pwd")
String pwd);


@WebMethod
public String getUser(@WebParam(name = "email")
String email, @WebParam(name = "pwd")
String pwd);


}


/**
 * 自定义接口实现
 * 
 * @time 9:01:46 PM
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
@WebService
public class PUserServiceImpl implements PUserService {


private BaseDao<User> userDao;

    // 注入userdao
@Resource(name = "userDao")
public void setUserDao(BaseDao<User> userDao) {
this.userDao = userDao;
}


public String seyHello(String name) {
System.out.println("进入服务器端的sayHello方法");
return "你好" + name;
}


/**
* 注册用户
*/


public String saveUser(String email, String nickName, String pwd) {
System.out.println("进入服务器端的saveUser方法");
User user = new User();
user.setEmail(email);
user.setNickName(nickName);
user.setPassword(pwd);
user.setRegDate(new Date());


//
userDao.saveEntity(user);
return "success";
}


/**
* 查询用户
*/
public String getUser(String email, String pwd) {


System.out.println("进入服务器端的getUser方法" + email + "===pwd===" + pwd);
List<User> userList = userDao.findEntityByHQL("from User u where u.email =? and u.password = ?", email, pwd);
if (!ValidateUtil.isValidate(userList)) {
return "error";
}
System.out.println("user===============" + userList.get(0).getEmail());
return "success";
}
}



web.xml中的配置

<!-- cxf的设置 -->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>


spring配置文件

<!-- service服务 -->
<bean id="pService"
class="cn.yue.lsp.service.impl.PUserServiceImpl">
</bean>
<!-- 访问路径 -->
<jaxws:endpoint id="puserService" implementor="#pService"
address="/puserService" />


注:如果在是作声明式事务通知,在接口中的方法一定不要随意声明,会报hibernate session no bond的错误


android 客户端

需要添加第三方包

ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar


/**
 * userService接口实现
 * 
 * @time 上午9:57:01
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class UserServiceImpl implements UserService {


/**
* 注册用户
*/
@Override
public String saveEntity(User user) {
Mylog.i("tag", "add user success!");


// =========================================================


// 创建HttpTransportSE对象
HttpTransportSE htse = new HttpTransportSE(Constants.SERVICE_URL);
// 使用soap1.1协议,创建SoapSerializationEnvelope对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
// 创建soapObject对象,参数为命名空间和webService 方法
SoapObject request = new SoapObject(Constants.SERVICE_NAMESPACE, Constants.METHOD_ADDUSER);
// 添加参数
// request.addProperty("name", user.getEmail());
request.addProperty("email", user.getEmail());
request.addProperty("nickName", user.getNickName());
request.addProperty("pwd", user.getPassword());


// 设置soap消息体
// envelope.setOutputSoapObject(request);
envelope.bodyOut = request;
String str = null;
try {
// 调用对象的call方法,
htse.call(null, envelope);
if (envelope.getResponse() != null) {
Log.i("tag", "返回正常");
// 取得返回的soapObject对象
SoapObject result = (SoapObject) envelope.bodyIn;
str = result.getProperty(0).toString();
Log.i("tag", "返回值为:" + str);
return str;
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
Log.i("tag", "无返回值");
return str;
}

}

未设置超时时间,网络出问题需要作处理



posted @ 2012-10-17 22:16  retacn_yue  阅读(1932)  评论(1编辑  收藏  举报