我即将编写一个 MMO,使用以 JSON 响应的 HTTP 请求。
我是用 Java EE 风格编写的,希望移植到 Java EE 不会比它更难。但后来我发现我的几个 sinleton 的静态实例变量没有正确创建——类加载器在从 servlet 调用 SingletonClass.getInstance() 时生成了一堆。
我非常绝望,并认为添加@Singleton 描述会有所帮助。但事情并不那么容易。我的类在使用@EJB ClassName var 添加它们时根本不起作用。上下文查找也不起作用。
我尝试在 Eclipse、NetBeans 中开发,使用 Glassfish,尝试设置它,但没有任何帮助。我不知道该怎么办,现在真的很绝望。
我所需要的只是几个类,它们在加载应用程序时一直工作以处理游戏事件并保存记录的用户数据(分布在保存用户数据、怪物等的非 EJB 对象中),每个类都有一些定时事件记录的用户和使用 JSON 响应 HTTP POST 请求的能力。我什至不需要 ORM,我自己编写了所有查询,但仍然......必须工作的东西根本行不通。
我知道所有这些听起来很混乱且没有信息,但我不知道该怎么做——我的问题在哪里?也许,我应该填写 web.xml,或者使用不同的端口,或者飞向月球?或者只是改变编程语言?很抱歉您花时间阅读本文。
UPD。一些应用方案部分。包“服务器”中的前两个。
@Startup
@Singleton
public class DbWrapper
处理所有数据库连接,DbConnectionPool 是非单例类,它处理 java.sql.Conneciton 池。
@Startup
@Singleton
@DependsOn("DbWrapper")
public class World
是另一个处理所有游戏内事件的类,它包含已登录用户的 HashMap。用户和怪物类来自包“实体”(用户持有怪物列表)。
包“servlets”包含 HttpServlet 后代,注解 @WebServlet("/pathname"),尝试使用
@EJB World world
例如。但是诸如 world.getUser(id_user) 之类的东西根本行不通。
至于 JDBC - postgres jar 包含在 GlassFish 域的 /lib 中。
至于 JSON - 我使用在这里找到的 org.json:https ://github.com/douglascrockford/JSON-java