我正在开发一个网络应用程序并尝试集成一个聊天(现在)。我正在使用 Spring 和 Atmosphere 来执行此操作。我设法让聊天正常工作,但现在我似乎遇到了问题。我在一个单独的 servlet 中使用 @ManagedService(类似于大气聊天多房间示例),现在我需要访问 spring 应用程序内部的一个 bean。对于我正在使用的其他 servlet,这可以完美运行,但是在 Atmosphere ManagedService 中执行此操作时,我处于死胡同,该服务始终返回为 null。
有人知道我能做什么吗?
@ManagedService(path = "{room: [a-zA-Z][a-zA-Z_0-9]*}")
@Singleton
public class ChatRoom {
private final Logger logger = LoggerFactory.getLogger(ChatRoom.class);
private final ConcurrentHashMap<String, String> users = new ConcurrentHashMap<String, String>();
private String chatroomName;
private String mappedPath;
private BroadcasterFactory factory;
@Autowired
IFriendsServices friendServices;
@Message(encoders = { JacksonEncoder.class }, decoders = { UserDecoder.class })
public void onPrivateMessage(ChatUserMessageDTO user) throws IOException {
String userUUID = users.get(user.getUser());
friendServices.createChatMessage(user.getUser(), user.getSource(), user.getMessage());
if (userUUID != null) {
AtmosphereResource r = AtmosphereResourceFactory.getDefault().find(userUUID);
if (r != null) {
ChatProtocolMessageDTO m = new ChatProtocolMessageDTO(user.getSource(), user.getMessage(),
users.keySet(), factory.lookupAll());
factory.lookup(mappedPath).broadcast(m, r);
}
}
}