标签: java-ee-6

Tomcat 7上的CDI - 它有意义吗?

如果我可以选择,我将JBoss 7用于使用JSF 2和CDI的Java EE 6项目.

但有时候,客户项目的环境或多或少都会被设置 - 所以在一种情况下我们只限于Tomcat(6或7或7).

所以,我读了几篇关于在Tomcat中使用CDI(例如WELD)和JSF 2的文章,这表明这样做基本没问题.

不过,我的问题是 - 它有意义吗?或者servlet容器是不是这种架构的合适环境?有没有人使用Tomcat + CDI获得比演示项目更多的经验?

提前致谢!

tomcat cdi java-ee-6 jsf-2

18
推荐指数
1
解决办法
4909
查看次数

Java EE 6:目标无法访问,标识符'helloBean'已解析为null

我想尝试一个简单的JSF 2教程示例.

我在Eclipse中使用动态Web项目并发布到Glassfish 3服务器(运行 - >在服务器上运行).第一个index.xhtml页面正确加载,但是当我必须访问托管bean时,会显示以下错误:

/index.xhtml @14,48 value="#{helloBean.name}": Target Unreachable, identifier 'helloBean' resolved to null
Run Code Online (Sandbox Code Playgroud)

我已经看过关于这个主题的各种其他讨论,但是这些解决方案对我来说似乎永远不会起作用(例如,添加beans.xml,根据命名约定给托管bean命名等).

任何帮助,将不胜感激.

这是我目前正在使用的代码:

的index.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <title>JSF 2.0 Hello World</title>
    </h:head>
    <h:body>
        <h3>JSF 2.0 Hello World Example - hello.xhtml</h3>
        <h:form>
           <h:inputText value="#{helloBean.name}"></h:inputText>
           <h:commandButton value="Welcome Me" action="response"></h:commandButton>
        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

response.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"    
      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <title>JSF 2.0 Hello World</title>
    </h:head> …
Run Code Online (Sandbox Code Playgroud)

java java-ee java-ee-6 jsf-2 managed-bean

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

如何为JNDI Lookup配置模块和应用程序名称

在EJB 3.1中,JNDI Lookup可以使用不同的Lookup-Names:

java:global[/<app-name>]/<module-name>/<bean-name>!<fully-qualifiedbean interface-name>           
java:global[/<app-name>]/<module-name>/<bean-name> 
java:app/<module-name>/<bean-name>!<fully-qualified-bean-interface-name> 
java:app/<module-name>/<bean-name> 
java:module/<bean-name>!<fully-qualified-bean-interface-name> 
java:module/<bean-name>
Run Code Online (Sandbox Code Playgroud)

在我的JavaEE 6项目中(使用Maven 2,Netbeans 6和Glassfish v3),应用程序名称为X-Snapshot.ear,EJB-Module为Y-Snapshot.jar.如何配置此maven项目以使用其他应用程序和模块名称?当这个名字改变时,我不想改变所有的JNDI Lookup!那么可以为JNDI LookUps配置应用程序和模块名称吗?

maven-2 jndi glassfish java-ee java-ee-6

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

Servlet 3.0异步

servlet 3.0异步功能之间的区别是什么:

doGet(request,response) {
Thread t = new Thread(new Runnable()
     void run(){
        // heavy processing
        response.write(result)
     }
}
t.start();
Run Code Online (Sandbox Code Playgroud)

在servlet 3.0中,如果我浪费一个线程来进行繁重的处理 - 我在容器中再赚一个线程,但是我在繁重的处理中浪费它... :(

有人可以帮忙吗?

java servlets java-ee-6

16
推荐指数
2
解决办法
6811
查看次数

为什么maven在构建过程中不复制属性文件?

我发现的任何东西都无法帮助我解决这个具体案例.我最近从一个普通的旧的Java Web应用程序项目(正在运行)切换到一个maven web项目.我得到以下运行时异常:

java.util.MissingResourceException: Can't find bundle for base name com.myapp.config, locale en
Run Code Online (Sandbox Code Playgroud)

我正在使用Netbeans创建一个JSF 2.0,Spring和Hibernate Web应用程序.我有以下目录结构:

src\main\java\com\myapp包含config.properties
src\main\resources空

目标\ myapp\WEB-INF\classes\com\myapp包含没有config.properties的编译类文件
src\main\java\com\myapp包含config.properties

检查目标文件夹中的WAR文件不会显示属性文件的任何迹象,因此就好像Maven构建插件没有复制属性文件一样.我知道你可以在pom中放置一个标签,但它对我不起作用.下面的链接提到资源文件夹(对我来说是空的)在构建期间包含其内容但是如果是这种情况,你如何从Netbeans做到这一点?我只希望将属性文件与我的war一起打包,以便在将其部署到服务器时可以访问它.

http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html

pom.xml中:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<repositories>
    <repository>
        <id>java.net</id>
        <name>Repository hosting the Java EE 6 artifacts</name>
        <url>http://download.java.net/maven/2</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-hibernate3</artifactId>
        <version>2.0.8</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.1.8</version>
    </dependency>
    <dependency>
        <groupId>net.authorize</groupId>
        <artifactId>java-anet-sdk</artifactId>
        <version>1.4.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId> …
Run Code Online (Sandbox Code Playgroud)

resourcebundle maven java-ee-6

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

@OneToOne(可选= false)和@JoinColumn(nullable = false)一起使用

我在JPA 2.0 FR规范11.1.37中遇到了这个例子.OneToOne注释,第403页:

@OneToOne(optional=false)
@JoinColumn(name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
public CustomerRecord getCustomerRecord() { return customerRecord; }
Run Code Online (Sandbox Code Playgroud)

有什么理由我应该放在@OneToOne(optional=false)同一时间@JoinColumn(... nullable=false)吗?

这两个声明不一样吗?他们中的一个不是多余的吗?
它们都用于DDL模式生成吗?

java annotations nullable java-ee-6 jpa-2.0

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

如何在maven-war-plugin中正确设置清单类路径

我已经使用maven-ear-plugin和maven-war-plugin以及maven-ejb-plugin成功部署并运行打包为EAR的应用程序到Jboss AS7.

.
|-- META-INF
|   |-- application.xml
|   |-- MANIFEST.MF
|   `-- maven
|       `-- com.patrac
|           `-- Patrac-ear
|               |-- pom.properties
|               `-- pom.xml
|-- Patrac-ejb-1.0-SNAPSHOT.jar
`-- Patrac-web-1.0-SNAPSHOT.war
Run Code Online (Sandbox Code Playgroud)

在应用程序源代码目录中,poms位于以下位置:

.
|
|-- Patrac-ear
|   `-- pom.xml
|-- Patrac-ejb
|  `-- pom.xml
|-- Patrac-web
|   `-- pom.xml
`-- pom.xml
Run Code Online (Sandbox Code Playgroud)

在部署应用程序时,我无法弄清楚如何停止一些恼人的警告消息:

12:32:03,958 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-2) Class Path entry richfaces-components-ui-4.0.0.Final.jar in "/content/Patrac.ear/Patrac-web-1.0-SNAPSHOT.war"  does not point to a valid jar for a Class-Path reference.
12:32:03,970 WARN  [org.jboss.as.server.deployment] (MSC service …
Run Code Online (Sandbox Code Playgroud)

ear maven java-ee-6

16
推荐指数
1
解决办法
3万
查看次数

在注入点使用限定符[@Default]的类型[...]的不满意依赖(使用带有CDI的@Stateful EJB)

我有以下代码来管理两种存储库.两个存储库类都继承一个接口以允许重新初始化其资源.

public interface CachingRepository
{
    public void invalidateCache();
}
Run Code Online (Sandbox Code Playgroud)

全局,应用程序范围的回购:

@Named("globalRepo")
@ApplicationScoped
public class GlobalRepository implements CachingRepository
{
    private List<Category> categories;

    ...

    @Override
    public void invalidateCache()
    {
        categories = null;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

每个用户,会话范围的回购:

@Named("userRepo")
@SessionScoped
//@Stateful         // <- NOTE HERE
public class UserRepository implements CachingRepository, Serializable
{
    private List<MyFile> files;

    @Override
    public void invalidateCache()
    {
        files = null;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

将此(不@Stateful)注入上下文时

@Named
@ViewScoped
public class MyHandler implements Serializable
{
    @Inject
    private UserRepository userRepo;

    ...
}
Run Code Online (Sandbox Code Playgroud)

有用.但是,在添加 …

java cdi seam3 ejb-3.0 java-ee-6

16
推荐指数
1
解决办法
4万
查看次数

是否可以定义一个与其实现分开的jax-rs服务接口(使用eclipse和jersey)?

我不知道标题是否令人困惑,但让我说我有这个界面:

@Produces(MediaType.APPLICATION_JSON)
@Path("/user")
public interface UserService {

    @GET
    @Path("/{userId}")
    public Response getUser(@PathParam("userId") Long userId);

}
Run Code Online (Sandbox Code Playgroud)

为什么当我尝试实现一个版本Eclipse重写覆盖方法的注释而不是类?

class UserServiceImpl implements UserService {

    @Override
    @GET
    @Path("/{userId}")
    public Response getUser(@PathParam("userId") Long userId) {
        // TODO Auto-generated method stub
        return null;
    }

}
Run Code Online (Sandbox Code Playgroud)

我试图为restful Web服务创建一个标准定义,然后进行不同的实现.使用标准的jax-rs是否可以这样?我是否有机会使用错误的注释?

java jax-rs jersey java-ee-6

16
推荐指数
1
解决办法
1万
查看次数

Java EE 6中的多租户支持

我有一个现有的Java EE 6应用程序(部署在Glassfish v 3.1中),并且希望支持多个租户.我目前在我的应用程序中使用的技术/ API是

  • EJB(包括EJB计时器服务)
  • JPA 2.0(EclipseLink)
  • JSF 2.0
  • JMS
  • JAX-RS
  • 我也计划使用CDI

据我所知,添加多租户支持仅影响持久层.我的问题:以前有人这样做过吗?转换应用程序的步骤是什么?这会影响除持久性以外的其他层吗?

因此,将有大量租户,所有数据将驻留在相同的数据库架构中.

java java-ee multi-tenant java-ee-6

15
推荐指数
1
解决办法
5292
查看次数