vysperメッセージログをデータベースに保存(純粋なメモ)
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);//
}