Tomcat是Web服务器还是应用程序服务器?
我遇到了一个情况......
在Spring 3.0和Java EE 6.0之间的Java EE开发方面,我被要求就哪种方法提出建议.我是,现在仍然是,Spring 2.5中,相比于传统的Java EE 5开发的启动,特别是与JBoss,我甚至迁移旧应用程序来春在这里影响了发展政策的重新定义,包括春特定的API,并帮助开发一个战略计划来培养更轻量级的解决方案,比如Spring + Tomcat,而不是更重的JBoss,现在,我们只是将JBoss用作Web容器,拥有我称之为"容器内容容器悖论",也就是说,让大多数API的Spring应用程序在JBoss中运行,所以我们正在迁移到tomcat.
然而,随着Java EE的6.0的许多功能的到来,这让春天在那个时候有吸引力的,易于部署,更少的耦合,甚至某种DI的,等等,似乎已经模仿,以某种方式或其他.JSF 2.0,JPA 2.0,WebBeans,WebProfiles等
所以,问题是......
从您的角度来看,考虑到Java EE 6.0提供的新视角,继续投资像Spring这样的非标准Java EE开发框架是多么安全和合乎逻辑?
我们可以谈谈Spring开发的3年或4年,或者您是否建议尽早采用Java EE 6.0 API及其实践?
我会很感激任何见解.
我刚开始使用JSF,我有三个与JSF实现和组件库相关的问题
JSF实现和组件库有什么区别?
有哪些JSF实现(如Apache MyFaces)可用,它们之间有什么区别?
有哪些JSF组件库(如富脸和冰面)可用,它们之间有什么区别?
任何提供相关信息的相关链接也会有所帮助.
混淆使用JSF2 + Spring + EJB3或它们的任意组合让我感到有些困惑.我知道Spring的一个主要特性是依赖注入,但是我可以使用JSF托管bean @ManagedBean和@ManagedPropertyanotations,并获得依赖注入功能.使用EJB3,我更加困惑何时将其与JSF一起使用,或者甚至有理由使用它.
那么,在什么样的情况下使用Spring + JSF2或EJB3 + JSF2是个好主意?
到目前为止,我只使用JSF2创建了一些小型Web应用程序,从不需要使用Spring或EJB3.但是,我在许多地方看到人们正在将所有这些东西放在一起.
我正在创建我的第一个项目Java EE 7,但我遇到了麻烦.感谢任何帮助.
应用程序启动时,Tomcat日志显示以下消息:
"validateJarFile (C:\...\build\web\WEB-INF\lib\javaee-api-7.0.jar)-jar not loaded. See Servlet 2.3 Spec, section 9.7.2. Offending class: javax/servlet/Servlet .class"
Run Code Online (Sandbox Code Playgroud)
当我点击调用托管bean的按钮时,我收到错误:
Advertência: /index.xhtml @18,66 value="#{indexMB.user}": Target Unreachable, identifier 'indexMB' resolved to null
javax.el.PropertyNotFoundException: /index.xhtml @18,66 value="#{indexMB.user}": Target Unreachable, identifier 'indexMB' resolved to null
Run Code Online (Sandbox Code Playgroud)
IndexMB
@Named("indexMB")
@RequestScoped
public class IndexMB {
private String password;
private String user;
public String loginTest(){
return (this.user.equals("admin") ? "adminPage" : "inOutPage");
}
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
的index.xhtml
<html ...>
<f:loadBundle …Run Code Online (Sandbox Code Playgroud) 我正在下载Java EE,似乎有一些荒谬的不同下载选项.我不确定应该选择哪一个.Java EE似乎与GlassFish打包在一起.任何人都可以告诉我这是什么,它对我有什么好处?
其次,如果我只是想玩游戏并了解Java EE,这对我来说是下载吗?列出选项的链接如下......
我知道这已被问了一百万次我做了我的功课,但最后我还不完全理解的是,是否有"Java EE JDK"?
当我下载SDK时,它会尝试安装我不想要的大量垃圾.所以我做了一些阅读并意识到实际上Java SDK是一组技术上与JDK无关的工具.所以我正在寻找的只是简单的JDK单独下载.
我们知道Sun的(现在的Oracle)网站一直提供 "Java SE JDK" .但是,我正在开发一个Web应用程序,并对一些 Java EE特性感兴趣:javax.servlet,javax.validation,javax.persistence和javax.transaction.所以我真正想要的是"Java EE JDK".
我正在使用典型的Maven/Tomcat/Spring/Hibernate设置,在过去,我总是在Maven提供的范围中为我的项目添加仅API依赖项,用于Java EE规范的这些部分,即:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
因此,如果我为我的项目所需的所有Java EE API执行此操作,那么我实际上将Java SE JDK与一些其他手动声明的Java EE组件一起使用.此外,当我指示我的IDE使用Java EE SDK安装附带的JDK时,这些额外的命名空间不可用.
换句话说,对于所有意图和目的,似乎Java EE SDK下载附带的JDK等同于我在安装"Java SE JDK"时获得的JDK ...如果这是正确的那么有我不需要安装Java EE SDK,我可以简单地使用Java(SE)JDK声明我需要的任何Java EE组件作为*-api /提供的依赖关系,如上所述.
所以我的问题是:我在上面描述了正确的方法,还是有"Java EE JDK"这样的东西?即一个JDK,它带有未实现的接口,如javax.servlet和javax.resources等等?如果这样的野兽存在,我会从哪里下载?
我想了解JEE和J2EE之间的区别.我想这两者都是Java Enterprise开发工具或环境.但究竟是什么让他们与众不同?
我正在尝试将基于JSF的应用程序部署到Tomcat 6.我的构建系统的设置方式,WAR本身没有任何库,因为该服务器共提供43个应用程序.而是将库复制到共享库文件夹中并在应用程序之间共享.部署时,我收到此错误
SEVERE: Error deploying configuration descriptor SSOAdmin.xml
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/faces/webapp/FacesServlet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1667)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1078)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4611)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) …Run Code Online (Sandbox Code Playgroud)