在我的公司中,不鼓励使用Spring框架,而是推广Java EE 6.但是最近我@Transactional在使用@Transactional时读到了关于Springs 注释的内容,并认为这对我们的代码非常有用.
据我所知,@Transactional如果在调用该方法时没有活动事务,则注释的方法将重用已存在的事务或打开新事务.Java EE 6中是否有类似的东西(例如类似的注释)?
我试图让Glass EE AS 3.x和JBoss AS 6(以及发布后的7)之间的Java EE 6 webapp可移植,我有点疯狂.
因为每个服务器以不同方式映射数据源的JNDI名称,所以我需要在persistence.xml中为数据源指定应用程序专用内部名称,然后使用glassfish-web.xml或jboss-web.xml(根据需要)将其映射到实际服务器中的数据源名称.
理论很简单(对EE而言):
不幸的是,这个理论就此而言,因为在我的生活中,我无法在Glassfish AS 3.1,3.1.1,3.2 beta,JBoss AS 6或JBoss AS 7 beta中使用它.现在我正专注于让它在Glassfish上运作.
当我尝试在persistence.xml中部署引用"my-datasource"的应用程序时,Glassfish报告"资源无效:my-datasource__pm":
<?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="org.example_glassfish-webxml-datasource-jndi-mapping_war_1.0-SNAPSHOTPU" transaction-type="JTA">
<jta-data-source>my-datasource</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
并通过web.xml将其映射到已知的现有数据源:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- servlet declarations etc elided ... -->
<resource-ref>
<res-ref-name>my-datasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
Run Code Online (Sandbox Code Playgroud)
...和glassfish-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> …Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么类实现Serializable接口?
我正在使用这里的教程:http://www.objectdb.com/tutorial/jpa/eclipse/ee/entity
我想知道为什么这堂课会延伸Serializable?我已经阅读了这个课程的描述,我不明白serialVersionUID它的重要性以及为什么它对我的模型是必要的.
该焊接文档指出javax.enterprise.inject.Model注释是专为控制器(逻辑,因为它标志着bean作为@RequestScoped和@Named).
但为什么它被命名为Model而不是Controller?
我正在尝试将基于Jax-WS的Web服务迁移到JBoss 7,但是应用程序(部署为战争)很难在启动时启动监听器.
ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-14) Error listenerStart
ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-14) Context [/abc] startup failed due to previous errors
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-14) MSC000001: Failed to start service jboss.web.deployment.default-host (...)
Run Code Online (Sandbox Code Playgroud)
由于先前的错误,错误消息引用失败,但日志中不会打印错误.有问题的应用程序捆绑jax-ws-rt像这样:
<dependency>
<groupId>sun-jaxws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果我改变了要提供的jax-ws-rt的范围,这将导致一个很好的ClassNotFound,如预期的那样.
WARN [org.jboss.as.ee] (MSC service thread 1-13) JBAS011006: Not installing optional component com.sun.xml.ws.transport.http.servlet.WSServletContextListener due to exception: java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener (…)
Run Code Online (Sandbox Code Playgroud)
servlet在web.xml中定义如下.
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<description>JAX-WS endpoint for data service</description>
<display-name>abc</display-name>
<servlet-name>abc</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> …Run Code Online (Sandbox Code Playgroud) 我有一个JavaEE环境(在我的特定情况下它是一个Glassfish Web配置文件),我想要一种独立于容器的方式来配置我的应用程序,具有以下功能:
我希望尽可能少的前置条件(现在唯一一个是JNDI数据源)来部署和运行我的应用程序(设置JNDI数据源,部署WAR文件,在某些配置文件夹中有一个可选的.properties文件,并且 - 完成).
这引出了我的第一个问题:这是一个常见的/好的/有用的设置还是不必要的复杂和/或非常奇特?
默认配置将位于属性文件中:
src/main/resources/config/default.properties
应用范围的描述豆读取初始化这个特性在这里:
@Named
@ApplicationScoped
public class Configuration implements Serializable {
...
@PostConstruct
public void initConfiguration() {
loadDefaultConfiguration();
}
private void loadDefaultConfiguration() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try (InputStream input = classLoader.getResourceAsStream("/config/default.properties")) {
properties.load(input);
} catch(IOException ex) {
LOGGER.error(...);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这些设置将存储在具有键和值列的数据库表中.它们将始终通过EntityManager访问,希望JPA实现的缓存将是聪明的:).这里的优点是,在应用程序运行时可以轻松更改这些设置.
@Named
@ApplicationScoped
public class Configuration implements Serializable {
...
public T getProperty(final PropertyKeyEnum key, final Class<T> type) {
if (key.getSource() == …Run Code Online (Sandbox Code Playgroud) 我非常了解Maven,但我通常使用Netbeans,这使得部署Java EE应用程序非常容易 - 并处理任何更改的热部署.
我现在使用的团队使用Eclipse作为他们选择的IDE,但他们之前都没有使用过Maven项目.所以我需要知道如何正确地将Eclipse的项目方面添加到我们拥有的maven项目中,以便通过WTP支持(热)部署.我们正在使用Weblogic 12c进行这项特殊的努力.
我们的项目布局非常简单:
super-project (pom)
project-ear (pom)
project-ejb (pom)
project-web (pom)
Run Code Online (Sandbox Code Playgroud)
感谢您指点我的任何资源.
我成功运行64位JDK.但我现在需要在Windows 7机器上安装Java EE sdk 6.我从Oracle网站下载了"java_ee_sdk-6u4-windows.exe".但是当我尝试安装它时,我得到附加截图中附带的错误.
我已经仔细检查了我的java_home和class-path,它们是完美的.
任何想法如何解决它.
在我的应用程序中,我在两个不同的地方对会话bean使用@Asynchronous业务方法.每个都有自己的逻辑和要求,所以理想情况下我想为每个配置一个最大线程池大小.看起来JBoss EAP 6.2.2 EAP只允许一个异步线程池.
有没有办法创建两个,或者我只需要创建一个足够两者的单个池(并且失去限制的能力)?
我有部署到glassfish的.war应用程序.我想做CDI,所以我需要从我的POJO中查找java:comp/BeanManager.但它不起作用:BeanManager根本找不到!
怎么了?
我是否需要在glassfish中启用CDI?或者它只适用于.ear文件?
谢谢.
java-ee-6 ×10
java ×6
cdi ×2
glassfish ×2
java-ee ×2
jboss7.x ×2
classloader ×1
classpath ×1
eclipse ×1
eclipselink ×1
ejb-3.1 ×1
glassfish-3 ×1
jax-ws ×1
jboss-eap-6 ×1
jdk1.6 ×1
maven ×1
properties ×1
spring ×1
terminology ×1
transactions ×1