如果我可以选择,我将JBoss 7用于使用JSF 2和CDI的Java EE 6项目.
但有时候,客户项目的环境或多或少都会被设置 - 所以在一种情况下我们只限于Tomcat(6或7或7).
所以,我读了几篇关于在Tomcat中使用CDI(例如WELD)和JSF 2的文章,这表明这样做基本没问题.
不过,我的问题是 - 它有意义吗?或者servlet容器是不是这种架构的合适环境?有没有人使用Tomcat + CDI获得比演示项目更多的经验?
提前致谢!
我想尝试一个简单的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) 在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配置应用程序和模块名称吗?
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 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) 我在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模式生成吗?
我已经使用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) 我有以下代码来管理两种存储库.两个存储库类都继承一个接口以允许重新初始化其资源.
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)
有用.但是,在添加 …
我不知道标题是否令人困惑,但让我说我有这个界面:
@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 EE 6应用程序(部署在Glassfish v 3.1中),并且希望支持多个租户.我目前在我的应用程序中使用的技术/ API是
据我所知,添加多租户支持仅影响持久层.我的问题:以前有人这样做过吗?转换应用程序的步骤是什么?这会影响除持久性以外的其他层吗?
因此,将有大量租户,所有数据将驻留在相同的数据库架构中.