状态机类强制转换异常

时间:2017-08-11 09:00:52

标签: spring-statemachine

再次关于Spring状态机的问候。 :) 我有一个场景,我必须将对象存储在状态机的扩展状态,并在以后获取它以进行处理。当请求进入SM时,我执行以下操作并将对象置于扩展状态。

            SIMAccountInfo simAccountInfo =(SIMAccountInfo) context.getStateMachine().getExtendedState().getVariables().get("acc");

然后我将状态机保存在redis中,稍后当我需要这个对象进行处理时,我得到它如下所示

class Login extends CI_Controller {

    public function index() {
        $this->lang->load('users');
        $this->layout = 'ajax';
        $this->load->library('form_validation');
        $this->form_validation->set_rules('email', 'lang:users_email', 'required|callback_check');
        $this->form_validation->set_rules('password', 'lang:users_password', 'required');
        if ($this->form_validation->run() == FALSE) {
            $this->load->view('login/index');
        } else {
            $user = $this->db->where('email', $this->input->post('email'))->where('password', md5($this->input->post('password')))->get('users')->row();
            $this->session->set_userdata(array(
                'email' => $user->email,
                'image3' => $user->image3,
                'user_id' => $user->user_id,
                'username' => $user->username
            ));
            if($user->is_admin == 1)
            redirect('admin/dashboard');
        else
            redirect('member/dashboard');
        }
    }

    public function check() {
        $user = $this->db->where('email', $this->input->post('email'))->where('password', md5($this->input->post('password')))->get('users')->row();
        if (!$user) {
            $this->form_validation->set_message('check', lang('users_invalid_email_or_password'));
            return FALSE;
        }
        else
            return TRUE;
    }

}

但是我得到了一个类强制转换

  

java.lang.ClassCastException:com.ctf.sims.dto.xboss.SIMAccountInfo   无法转换为com.ctf.sims.dto.xboss.SIMAccountInfo

你能猜出为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

可能与我们使用redis的kryo序列化有关,因为我不记得在扩展状态下添加任何自定义类。

您可能希望为此创建一个新的GH问题,并提供足够的信息来重现它。