vysperメッセージログをデータベースに保存(純粋なメモ)

2546 ワード

1.メッセージ・レコードを格納するテーブルを新規作成
//      
@Entity
@Table(name = "T_BIZ_MESSAGE_LOG")
public class MessageLogVO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7667535307488288863L;
	@Id
	@Column(name = "id")
	private String id; //    ID
	@Column(name = "fromjid")
	private String fromjid; //     jid

	@Column(name = "tojid")
	private String tojid; //        jid

	@Lob
    @Basic(fetch=FetchType.LAZY)
	@Column(name = "message")
	private String message; //    
	
	
	@Column(name = "createddatetime")
	private Timestamp createddatetime; //     
2.メッセージ記録コントローラの作成
//       
public class OALogStorageProvider extends AbstractBodyTextLogStorageProvider {
	private final static Logger logger = LoggerFactory
			.getLogger(OALogStorageProvider.class);
	@Autowired
	IMessageLogDAO messageLogDAO;

	//         
	@Override
	protected void logText(Entity from, Entity to, String message) {
		// TODO Auto-generated method stub
		MessageLogVO vo = new MessageLogVO();
		vo.setId(UUIDGenerator.generate());// uuid
		vo.setFromjid(from.getBareJID().toString());//    
		vo.setTojid(to.getBareJID().toString());//    
		vo.setMessage(message);//     
		vo.setCreateddatetime(new Timestamp(new Date().getTime()));
		try {
			messageLogDAO.saveMessageLog(vo);//     
		} catch (Exception e) {
			// TODO Auto-generated catch block
			logger.error("", e);
		}

	}

}
3. スプリング注入
<!-- SSO         -->
    <bean id="ssoStorageRegistry" class="com.oawebchat.sso.SSOStorageProviderRegistry" >
          <property name="ssoUserAuthentication" ref="ssoUserAuthentication" />
          <property name="oaVcardTempPersistenceManager" ref="oaVcardTempPersistenceManager" />
          <property name="oaRosterManager" ref="oaRosterManager" />
          <property name="ssoJabberSearchManager" ref="ssoJabberSearchManager" />
          <property name="oaLogStorageProvider" ref="OALogStorageProvider" />
    </bean>
public class SSOStorageProviderRegistry extends OpenStorageProviderRegistry {
.......
public void setOaLogStorageProvider(OALogStorageProvider oaLogStorageProvider) {
 this.oaLogStorageProvider = oaLogStorageProvider;
 this.add(this.oaLogStorageProvider);//        
 }