标签: java-ee-6

是否有类似于Java EE 6中可用的Springs @Transactional注释的东西?

在我的公司中,不鼓励使用Spring框架,而是推广Java EE 6.但是最近我@Transactional使用@Transactional时读到了关于Springs 注释的内容,并认为这对我们的代码非常有用.

据我所知,@Transactional如果在调用该方法时没有活动事务,则注释的方法将重用已存在的事务或打开新事务.Java EE 6中是否有类似的东西(例如类似的注释)?

java spring transactions java-ee-6

6
推荐指数
2
解决办法
2049
查看次数

Glassfish:无法使用glassfish-web.xml将数据源JNDI名称映射到可移植名称

我试图让Glass EE AS 3.x和JBoss AS 6(以及发布后的7)之间的Java EE 6 webapp可移植,我有点疯狂.

因为每个服务器以不同方式映射数据源的JNDI名称,所以我需要在persistence.xml中为数据源指定应用程序专用内部名称,然后使用glassfish-web.xml或jboss-web.xml(根据需要)将其映射到实际服务器中的数据源名称.

理论很简单(对EE而言):

  • 在persistence.xml中使用内部名称,例如"my-datasource"
  • 向web.xml添加resource-ref条目,声明您的应用程序需要名为"my-datasource"的资源
  • 使用适当的服务器语法在glassfish-web.xml和jboss-web.xml中添加映射,声明应将"my-datasource"映射到名为"real-DS-created-by-admin"的应用服务器提供的数据源

不幸的是,这个理论就此而言,因为在我的生活中,我无法在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)

glassfish eclipselink java-ee-6

6
推荐指数
1
解决办法
6569
查看次数

扩展Java可序列化类的目的是什么?

可能重复:
为什么类实现Serializable接口?

我正在使用这里的教程:http://www.objectdb.com/tutorial/jpa/eclipse/ee/entity

我想知道为什么这堂课会延伸Serializable?我已经阅读了这个课程的描述,我不明白serialVersionUID它的重要性以及为什么它对我的模型是必要的.

java java-ee java-ee-6

6
推荐指数
1
解决办法
9872
查看次数

@Model注释和MVC

焊接文档指出javax.enterprise.inject.Model注释是专为控制器(逻辑,因为它标志着bean作为@RequestScoped@Named).

但为什么它被命名为Model而不是Controller?

java terminology cdi java-ee-6

6
推荐指数
1
解决办法
5132
查看次数

错误listenerStart - JaxWS - JBoss as 7

我正在尝试将基于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)

jax-ws classpath classloader java-ee-6 jboss7.x

6
推荐指数
1
解决办法
4729
查看次数

JavaEE中的配置管理

我的目标

我有一个JavaEE环境(在我的特定情况下它是一个Glassfish Web配置文件),我想要一种独立于容器的方式来配置我的应用程序,具有以下功能:

  1. 没有指定其他内容时的默认配置(在WAR文件中)
  2. 自定义配置(WAR文件外)有两层:
    • 主机特定设置(在外部属性文件中;例如某些工作目录)
    • 应用程序特定设置(在数据库中;例如邮箱大小)

我希望尽可能少的前置条件(现在唯一一个是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)

java configuration properties java-ee-6 glassfish-3

6
推荐指数
1
解决办法
2221
查看次数

如何在Eclipse中配置Java EE maven项目?

我非常了解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)

感谢您指点我的任何资源.

eclipse maven java-ee-6

6
推荐指数
2
解决办法
2万
查看次数

Windows 7上未安装Java EE SDK 6

我成功运行64位JDK.但我现在需要在Windows 7机器上安装Java EE sdk 6.我从Oracle网站下载了"java_ee_sdk-6u4-windows.exe".但是当我尝试安装它时,我得到附加截图中附带的错误.在此输入图像描述

我已经仔细检查了我的java_home和class-path,它们是完美的.

任何想法如何解决它.

java jdk1.6 java-ee java-ee-6

6
推荐指数
1
解决办法
2308
查看次数

在JBoss EAP6中为异步会话bean方法创建两个线程池?

在我的应用程序中,我在两个不同的地方对会话bean使用@Asynchronous业务方法.每个都有自己的逻辑和要求,所以理想情况下我想为每个配置一个最大线程池大小.看起来JBoss EAP 6.2.2 EAP只允许一个异步线程池.

有没有办法创建两个,或者我只需要创建一个足够两者的单个池(并且失去限制的能力)?

java java-ee-6 ejb-3.1 jboss7.x jboss-eap-6

6
推荐指数
1
解决办法
870
查看次数

Glassfish和java:comp/BeanManager

我有部署到glassfish的.war应用程序.我想做CDI,所以我需要从我的POJO中查找java:comp/BeanManager.但它不起作用:BeanManager根本找不到!

怎么了?

我是否需要在glassfish中启用CDI?或者它只适用于.ear文件?

谢谢.

glassfish cdi java-ee-6

5
推荐指数
1
解决办法
1592
查看次数