我们有一个Web应用程序产品已经有好几年了,并且使用Tomcat在Windows下部署它,因为它将自己注册为Windows服务,因此它会自动启动和停止.
我们现在可能需要比Tomcat提供的更多Java EE工具(我们很容易受到容器中Java EE 6的影响)所以问题是哪些开源Java EE容器可以像Windows服务一样工作.由于Glassfish是目前唯一的Java EE 6实现,如果它运行良好会很好,但我想听听经验,而不仅仅是我能从小册子中读到的内容.如果没有,人们还会使用什么?
编辑:这也适用于Web容器,而不仅仅是Java EE容器.我们可能会保留必要的堆栈,直到找到合适的容器并获得Java EE 6支持.
编辑:我希望这个分布式工作.我对手动破解包装器等不感兴趣,但希望安装过程能够处理服务的创建和删除.
编辑2012:事实证明,Glassfish的Windows安装程序可以作为服务安装(需要.NET).组件网站http://kenai.com/projects/winsw.已经证明非常强大.
我打算使用一个webapp,每个使用它的人都会有一个客户端可以在其计算机上运行计算(因为这些计算无法在服务器上完成,负载太多......),然后将结果发送给服务器.
我想会有很多人对我的应用程序感兴趣,这就是为什么我想知道我的架构是否良好以及我是否能够处理成千上万的人.
我计划通过JNDI使用Glassfish服务器公开远程EJB,因此1000人可以同时使用这些EJB(我猜可能有5-50个请求/秒)来检索本地计算所需的数据,然后到发送结果......
将EJB暴露给许多客户端是否昂贵?使用webservices,rmi,另一种解决方案会更好吗?
你会为我推荐的另一种架构推荐我吗?
如何返回java.util.concurrent.Future带有Receipt对象的对象并仅使用@javax.ejb.Asynchronous注释?
我需要任何额外的配置让Spring处理ejb注释吗?
我不想自己编写任何并发逻辑.
这是我的尝试不起作用:
@Asynchronous
public Future<Receipt> execute(Job job) {
Receipt receipt = timeConsumingWork(job);
return receipt;
}
Run Code Online (Sandbox Code Playgroud) 问题几乎说明了一切,但显然我正在寻找在Java EE 6环境中可能会错过Seam 2的事情("损失").
对于我的最新(小)项目JavaEE 6或更具体的JSF 2是修复要求,因此使用Seam 2不是一个选项(也不会是).尽管有些人说要让Seam 2使用JSF 2,但我从未做过.到目前为止,我只使用了Seam 2,我担心切换到普通的JavaEE环境会带来比我目前所知更多的问题.
该项目具有以下基本/核心要求:
其余的将是基于GUI,搜索表单,客户端验证等,将由RichFaces 4和JavaEE 6 bean验证处理.没有Web服务,没有宁静的URL,没有消息,没有电子邮件.
我可以看到使用Seam安全性肯定是一种损失,但我不确定Seam持久性,实体/查询框架,JBoss EL和其他将是什么,尤其是整体编程模型(导航,EL,bean) .请注意,我们将能够在有意义的时候添加Seam 3模块,因此您可以在"增益"部分的讨论中包含Seam 3.
那么,任何人都能清楚这一点吗?(它不一定是一个完整的总结,无论你想到什么,继续)
PS:我无法连接到Seam论坛所以我觉得我需要在这里问.
我有一个带有嵌套EJB项目的EAR文件,一个.war动态Web项目和一个包含实体bean定义的.jar文件.
我正在尝试使用此远程接口创建一个简单的基于SOAP的Web服务:
package session;
import javax.ejb.Remote;
import javax.jws.WebMethod;
import javax.jws.WebService;
@Remote
@WebService
public interface HelloWorldRemote {
@WebMethod
public String greet(String from);
@WebMethod
public String getMessage();
}
Run Code Online (Sandbox Code Playgroud)
和这个实现类:
package session;
import javax.ejb.Stateless;
import javax.jws.WebService;
@Stateless
@WebService(endpointInterface = "session.HelloWorldRemote", serviceName = "HelloWorldWS")
public class HelloWorldImpl implements HelloWorldRemote {
public String greet(String from) {
return "Hello, " + from + ".";
}
public String getMessage() {
return "It's working.";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我部署EAR文件时,日志没有提及类,WSDL,Web服务或任何会让我相信它正在尝试根据我的注释创建Web服务的任何内容.
我错过了什么?
我正在尝试使用Tomcat运行Web应用程序,但应用程序正在使用以下库:
import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
Run Code Online (Sandbox Code Playgroud)
这些库不是Tomcat规范的一部分,因此我需要手动添加它们.
我应该添加哪些库?
如果我将一个字段定义为不可更新,这是否意味着该字段永远无法更新?我想做的是在保存整个实体对象时阻止字段更新,但是仍然能够编写显式更新此字段的查询。这可能吗?
我正在使用Hibernate和MySQL,但我更喜欢编写可移植的代码。
我想为我的项目启用单元测试.我创建了如下结构.
目录结构
.
??? pom.xml
??? src
? ??? main
? ? ??? java
? ? ??? resources
? ? ??? META-INF
? ? ? ??? beans.xml <-- Works fine in live
? ? ? ??? persistence.xml <-- Works fine in live
? ??? test
? ??? java
? ? ??? com
? ? ? ??? test
? ? ? ??? model
? ? ? ??? TestEntityManagerUtil.java
? ? ? ??? TestHibernate.java
? ??? resources
? ??? META-INF
? ? …Run Code Online (Sandbox Code Playgroud) 我正在尝试部署一个earin glassfish,但它无法解密它抱怨它找不到写入的DataSourcepersistence.xml
在persistence.xmlDataSource中配置为java:app/jdbc/mysqlDS但它正在寻找java:app/jdbc/mysqlDS__pm.这很奇怪.任何的想法?
编辑我创建了以下dtasources
编辑结束
这里有一些细节:
在这里 persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="test_pu" transaction-type="JTA">
<jta-data-source>java:app/jdbc/mysqlDS</jta-data-source>
<!--
tried with this too
<jta-data-source>java:app/jdbc/mysqlDS__pm</jta-data-source>
-->
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
错误日志
INFO: SEC1115: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created.
INFO: SEC1011: Security Service(s) Started Successfully
SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
SEVERE: Exception while invoking class org.glassfish.javaee.full.deployment.EarDeployer prepare method
SEVERE: Exception while …Run Code Online (Sandbox Code Playgroud) 在ejb-jar.xml文件中声明的EJB拦截器与beans.xml文件中声明的CDI拦截器之间是否有任何区别?
两个拦截器都使用注释@Interceptors声明.如果CDI拦截器也适用于EJB,那么为什么存在EJB拦截器?
java-ee-6 ×10
java ×6
java-ee ×3
cdi ×2
ejb-3.1 ×2
jpa ×2
web-services ×2
annotations ×1
concurrency ×1
datasource ×1
glassfish ×1
glassfish-3 ×1
hibernate ×1
jboss7.x ×1
jpa-2.0 ×1
seam ×1
seam2 ×1
seam3 ×1
spring ×1
tomcat ×1
tomcat6 ×1