Tag: java ee

防止消息处理的竞争条件

我有一个J2EE应用程序,通过Web服务接收消息(事件)。 消息具有不同类型(根据类型需要不同的处理)并以特定顺序发送。 它已经确定了一些问题,其中一些消息类型需要比其他消息类型更长 结果是序列中第二个接收的消息可以在序列中的第一个之前被处理。 我试图通过在处理消息的方法周围放置一个synchronized块来解决这个问题。 这似乎有效,但我不相信这是“正确的”方法吗? 是否有可能更合适的替代方案或“可接受”? 我已经包含了一小段代码,试图更清楚地解释。 ….任何建议/指导表示赞赏。 public class EventServiceImpl implements EventService { public String submit (String msg) { if (msg == null) return (“NAK”); EventQueue.getInstance().submit(msg); return “ACK”; } } public class EventQueue { private static EventQueue instance = null; private static int QUEUE_LENGTH = 10000; protected boolean done = false; BlockingQueue myQueue […]

从JSF中的Datatable获取选定的行数据

所以,我试图在这个问题中实现Anthony / BalusC的方法: 如何在JSF数据表中获取选定的行索引? 但无济于事。 我还浏览了@BalusC的“使用数据表”一文 (这是一如既往的精彩),但这是为JSF1.2编写的,而2.0文章并没有真正解决获取所选行数据的问题。 当用户单击“添加到我的collections夹”按钮时,所选行不会传递给辅助bean,导航案例不会被跟踪,并且当前页面会刷新。 我在这里做错了什么想法? 这是我的支持bean: @ManagedBean(name = “selectedBean”) @RequestScoped public class SelectedBeerBean { private List favoriteBeers; private Beer selectedBeer; private HtmlDataTable datatableBeers; public HtmlDataTable getDatatableBeers() { return datatableBeers; } public void setDatatableBeers(HtmlDataTable datatableBeers) { this.datatableBeers = datatableBeers; } public String addBeer() { selectedBeer = (Beer) datatableBeers.getRowData(); return “selectedBeer”; } public […]

为JMS使用特定密钥库

我们要求将SSL客户端证书用于与IBM MQ服务器的JMS连接。 我已经专门针对Websphere MQ提出了一个问题,但后来我了解到这主要是JSSE的工作,可以通过Java系统属性进行配置(例如-Djavax.net.ssl.keyStore= )。 但是由于我们的WildFly 9 AS中已经有应用程序其他部分的活动密钥库,我正在寻找一种方法来为JMS部分启用特定的密钥库 – 这可以做到吗?

在某些时间安排消息驱动的bean来访问队列?

1) 您是否可以安排消息驱动bean仅在特定时间访问队列? 例如,用户有两个联系选项 – 上午9点至下午5点至下午5点至晚上10点。 我想有两个MDB,一个只在上午9点到下午5点活跃,另一个在下午3点到晚上10点。 两个队列都有全天发送给他们的消息,但我只想在特定时间处理它们。 理想情况下@Schedule可以工作但不幸的是它没有。 使用Glassfish 3.1.2和ActiveMQ 5.5.1,但我很确定它不是特定于实现的问题。 编辑1 码 @MessageDriven( activationConfig = { @ActivationConfigProperty(propertyName = “destinationType”, propertyValue = “javax.jms.Queue”), @ActivationConfigProperty(propertyName = “destination”, propertyValue = “jms/queue/amqmsg”) }) public class ExampleMessageBean implements MessageListener { @Schedule(second=”*”, minute=”*”, hour=”9-17″, persistent = false) public void onMessage(Message message) { try { System.out.println(“We’ve received a message: ” + […]

JBoss AS 7关闭 – 在WAR部署停止之前关闭连接管理器

环境:JBoss AS 7.1.1.Final。 我有一个WAR应用程序使用从JBoss AS JNDI获取的数据源。 当我关闭服务器(控制台中的Ctrl + C)时,应用程序会收到一个shutdown命令并开始销毁它的Spring上下文。 但是,我使用调度程序来执行某些数据库操作。 当应用程序关闭时,我希望完成当前队列中的任务(但不接受新任务 – 标准JDK Executor.shutdown()行为)。 当我取消部署应用程序而不停止服务器时,这很好。 但是,当我停止整个服务器时,连接管理器在应用程序取消部署之前关闭,从而导致 14:31:51,604 INFO [org.jboss.as.logging] JBAS011503: Restored bootstrap log handlers 14:31:51,617 INFO [org.apache.coyote.http11.Http11Protocol] Stopping Coyote HTTP/1.1 on http-127.0.0.1-127.0.0.1-18080 14:31:51,638 INFO [org.hornetq.ra.HornetQResourceAdapter] HornetQ resource adapter stopped 14:31:51,653 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/MY-APP]] Closing Spring root WebApplicationContext 14:31:51,656 INFO [org.springframework.web.context.support.XmlWebApplicationContext] Closing Root WebApplicationContext: startup date [Tue […]

ClientRequestFactory RestEasy已弃用……任何其他RestEasy替代方案?

我需要创建rest-easy客户端,使用其他人创建的RestService的de接口……这样做很好,除了一件事…… 当我从rest-easy 2.3.5.Final更新到rest-easy 3.0.x时,ClientRequestFactory类看起来像@Deprecated。 实际代码是: ClientRequestFactory crf = new ClientRequestFactory(UriBuilder.fromUri(“http://url-of-service”).build()); SomeRestInterface client = crf.createProxy(SomeRestInterface.class); client.theMethod(); 任何一个,现在什么是版本3.0.x的ClientRequestFactory的rest-easy的替代方案?

GWT – 如何组织项目以在它们之间具有多个网页和导航

我是GWT的新手(顺便给它留下了深刻的印象)并且发现它对像我这样熟悉C ++ / .NET桌面技术的人非常有吸引力,他们愿意编写Web应用程序。 我根据GWT Eclipse Wizard中生成的示例启动了自己的项目。 这个项目生成简单的html页面,其中包含面板和主模块java类(带有onModuleLoaded),只需创建小部件并将其嵌入到页面中。 现在我的问题是 – 如何组织代码/项目以在那之间拥有多个html页面和导航。 例如,主html页面有一个登录表单和一个登录按钮。 如果提供凭证并按下登录按钮,则GWT服务在服务器上执行,浏览器导航到第二个html页面。 是否有更复杂的样本应用程序可用于此类方案? 谢谢

setContextClassLoader含义

我正在尝试清理由于创建自己的线程而导致内存泄漏的Tomcat警告。 http://wiki.apache.org/tomcat/MemoryLeakProtection建议我在启动线程之前调用myThread.setContextClassLoader(null) 。 这次电话的含义是什么? run()方法中的代码是否仍然能够从我的应用程序中解析类?

适用于企业应用程序的瘦(ner)独立客户端

首先是一点背景 : 我正在使用EJB模块和Application Client模块处理企业应用程序(ear)。 我还使用hibernate JPA进行持久化,使用swingx进行GUI。 这是唯一的第三方atm。 此应用程序部署在Glassfish上。 一切进展顺利,直到我第一次部署我的应用程序并尝试通过Java Web Start启动它。 我遇到了主要的拦路保护程序–JWS不喜欢hibernate3.jar,抱怨它没有签名,尽管它已经签署了。 如果你有兴趣,我在这里描述了这个问题。 无论如何,它可能与JVM中这个未解决的错误有关。 关于JWS还有其他一些我不喜欢的事情,但现在并不重要。 目前的方法 鉴于这个问题我想我自己部署了应用程序(我计划编写某种自动更新程序以保持所有内容同步)。 所以我按照这里的说明一切都很酷,除了我需要部署到客户端的应用程序容器大约40 MB! 。 这太过分了! 好的,所以我说我将删除应用程序容器,创建一个独立的客户端通过JNDI进行EJB查找并仅包含最小值。 在这里,我被困住了! 这是我使用的JNDI查找: Properties prop = new Properties(); prop.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.enterprise.naming.SerialInitContextFactory”); prop.put(“org.omg.CORBA.ORBInitialHost”, “bogdan-pc”); prop.put(“org.omg.CORBA.ORBInitialPort”, “3700”); try { InitialContext ctx = new InitialContext(prop); DatabaseCacheEJBRemote service = (DatabaseCacheEJBRemote) ctx.lookup(“ejbs.DatabaseCacheEJBRemote”); System.out.println(“count: ” + service.getProductionCount()); } catch (NamingException ex) […]

Java EE App Server Hello World

我对单独的Java应用程序开发非常熟悉,但很快就会使用Java EE应用程序服务器开发项目。 有没有人知道一个简单的操作指南,让一个hello-world类型的应用程序在应用程序服务器中工作? 我(也许是天真的)假设整个方法在不同的框架之间是相似的,所以我更感兴趣的是找出方法而不是陷入不同框架之间的差异。 如果你不知道一个好的指南,那么你可以发布一个子弹点式步骤来让你的世界运行吗? 下载XX 写一些代码来做YY 更改文件ZZ 其他步骤…… 注意:仅仅因为我家里有一台Windows机器,如果可以在Windows上运行,我宁愿运行,但为了更好的答案,基于linux / mac的实现是受欢迎的。