GlassFish是参考Java EE应用程序服务器。
我需要更好地了解 Glassfish 域文件夹内的“生成”目录中的内容。我可以看到已部署的应用程序在其中存储了一些资源文件(xml、属性、
我觉得我可能非常接近解决方案,但我就是无法掌握它。 程序的基本流程: 首先,您填写表格并提交。动作类将把对象存储在一个se...
我在 Glassfish 7 中运行我的项目时遇到问题。 这是我的 POM 的一部分: 。 。 。 com.mycompany ...
我目前正在将当前使用 REE 的 Rails 应用程序移植到 JRuby,以便我可以提供易于安装的 JRuby 替代方案。 我已使用我当前正在部署的 Bundler 将应用程序捆绑到 WAR 文件中...
获取网络::ERR_CERT_COMMON_NAME_INVALID
我在 Chrome (v 59.0.3071.109) 上遇到此错误,我尝试了几个答案,但没有任何运气。 这是安全选项卡中显示的内容: 该网站的证书不包含主题
java.io.IOException:org.omg.CORBA.INITIALIZE:无法实例化默认ORB实现com.sun.corba.ee.impl.orb.ORBSingleton
我正在将 java8 项目迁移到 java17,该项目正在使用使用 CORBA 的客户端定制的库。 (客户端尚未准备好迁移到 java17)。我正在使用 Glassfish-corba-orb-4.2....
NetBeans 15 无法生成,因为 EJB Lite 类在项目类路径上不可用
我正在尝试使用 NetBeans 15、Java Web 项目和 Ant 从实体类创建持久性新 JSF 页面。 我收到此错误: 无法生成,因为 EJB Lite 类在
我无法在 Intellij 上运行我的 Glassfish 服务器
我刚刚安装了Glassfish 5.1,正在尝试构建服务器。我按照他们网站上的说明进行操作,但是当我点击“运行”时,我只得到 等待服务器连接以开始工件部署...
glassfish 服务器 4.0 无法使用 jdk 21 启动
出现对话框:Glassfish 服务器无法使用 jdk21 启动,请选择其他 java SE 平台。 管理平台 取消 点击取消后,它给出信息:找不到java...
java.lang.NoClassDefFoundError:jakarta/ws/rs/client/ClientBuilder
我为 JAX-RS Java 应用程序编写了一个客户端类。我使用 Jakarta EE 9 和 Glassfish 作为应用程序服务器。问题是,当我运行这个类时,出现以下错误。 线程异常&
如何将 JSTL 添加到运行 GlassFish 的 Jakarta EE 10 项目 [重复]
首先,抱歉我的英语不好。 我开始学习 jakarta EE,并发现了用于防止 XSS 攻击的 Jakarta 标准标签库(JSTL)。 IDE 说:“无法解析 taglib uri” 我会...
如何使用 Jakarta Faces (JSF) 和 Glassfish 处理身份验证失败
我正在尝试基于 Jakarta 10.0 Faces 和 Glassfish 7 实现基于简单表单的身份验证。 一个(非常)最小(但有效)的代码显示了该过程:loginout.xhtml 登录调用 LoginOu...
如何将 JSTL 添加到运行 GlassFish 的 IntelliJ Jakarta EE 10 项目
首先,抱歉我的英语不好。 我开始学习 jakarta EE,并发现了用于防止 XSS 攻击的 Jakarta 标准标签库(JSTL)。 IDE 说:“无法解析 taglib uri” 我会...
我希望我不会因为找不到答案而提出重复的问题。 我收到此错误: javax.naming.NamingException:在 SerialContext 中查找“jdbc/osclassDB”失败...
我正在开发一个EJB应用程序,它需要每10秒查询一次sql服务器数据库以获得一些数据。 我注意到在日志中我有这两行: 信息:RAR7114:无法获取
java.lang.IllegalStateException:CDI 不可用
我正在使用 Netbeans 16 通过 Gradle、Jakarta EE 9 和 PrimeFaces 12 创建一个 Web 项目。基本项目创建工作正常,并在 Glassfish 6.2.5 服务器上正确部署。 添加
当我在持久性 xml 中提供另一个端口 5432 时,连接到端口 1,527 上的服务器本地主机时出错
在Java EE中,我提供了persistence.xml并正确打包。 在 Java EE 中,我提供了 persistence.xml 并且已正确打包。 <?xml version="1.0" encoding="UTF-8" ?> <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" version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="ArticleManagement"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>com.pauljabines.portfolio.Article</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres" /> <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <property name="javax.persistence.jdbc.user" value="postgres" /> <property name="javax.persistence.jdbc.password" value="************************" /> <property name="eclipselink.logging.level" value="ALL" /> </properties> </persistence-unit> </persistence> 问题:有了这些连接属性,为什么 glassfish 会抛出错误并说无法连接到端口 1527? 这是一些堆栈跟踪: org.glassfish.deployment.common.DeploymentException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.0.v20170811-d680af5): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1,527 with message Connection refused: connect. 解决方案是在glassfish中为postgresql创建一个jdbc连接池。为此: 在此处下载 postgresql jdbc 驱动程序并将其放置在 glassfish5\glassfish\domains\domain1\lib 中。 重新启动你的glassfish。 转到 glassfish 管理网页 localhost:4848。 转到 JDBC -> JDBC 连接池 单击“新建”以创建一个。 池名称 = 任何你想要的东西 资源类型 = javax.sql.ConnectionPoolDataSource 数据源类名 = org.postgresql.jdbc3.Jdbc3PoolingDataSource 对于属性,创建这些: 用户= postgres,你的用户 portNumber = 5432,数据库的端口号 密码 = 连接数据库的密码 databaseName = Portfolio, 要连接的数据库名称 服务器名称 = 本地主机,您的服务器名称 Ping 进行测试。 保存。 转到 JDBC -> 资源并编辑 jdbc/__default。 将池名称设置为您创建的池的池名称。 我今天也遇到了这个问题,我发现如果您使用@PersistenceUnit注释,应用程序会尝试连接到Glassfish服务器的内部JavaDB,我不知道为什么。因此,您可以进入 Glassfish 安装的 bin 目录并运行“asadmin start-database”以在端口 1527 启动 JavaDB。然后您的应用程序应该运行。但我认为这很令人困惑。所以我建议在没有 @PersistenceUnit 注释的情况下工作。使用“Persistence.createEntityManagerFactory()”创建 EntityManagerFactory。这无需启动 JavaDB 即可工作。
我们使用 Payara 5 服务器和 4 个应用程序实例。 JDBC 池配置为 5,设置为池中的最大连接数。指向 JDBC 连接点的 JDBC 资源...
**web.xml(登录.war)** ... 登录 **web.xml(登录.war)** <?xml version="1.0" encoding="UTF-8"?> ... <display-name>Login</display-name> <welcome-file-list> <welcome-file>login.xhtml</welcome-file> </welcome-file-list> <login-config> <auth-method>FORM</auth-method> <realm-name>jdbcRealm</realm-name> <form-login-config> <form-login-page>/login.xhtml</form-login-page> <form-error-page>/login-error.xhtml</form-error-page> </form-login-config> </login-config> <security-role> <role-name>USER</role-name> </security-role> <security-role> <role-name>ADMIN</role-name> </security-role> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> <cookie-config> <name>JSESSIONID</name> <path>/</path> <http-only>true</http-only> <secure>false</secure> verwenden --> </cookie-config> </session-config> <context-param> <param-name>org.primefaces.extensions.DELIVER_UNCOMPRESSED_RESOURCES</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>primefaces.THEME</param-name> <param-value>nova-light</param-value> </context-param> </web-app> **web.xml(开始.war)** <?xml version="1.0" encoding="UTF-8"?> ... <display-name>Startleiste</display-name> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list> <login-config> <auth-method>FORM</auth-method> <realm-name>jdbcRealm</realm-name> <form-login-config> <form-login-page>/login/login.xhtml</form-login-page> <form-error-page>/login/login-error.xhtml</form-error-page> </form-login-config> </login-config> <security-constraint> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>ADMIN</role-name> <role-name>USER</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>USER</role-name> </security-role> <security-role> <role-name>ADMIN</role-name> </security-role> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> <!-- Timeout in Minuten --> <cookie-config> <name>JSESSIONID</name> <path>/</path> <http-only>true</http-only> <secure>false</secure> <!-- Ändern Sie dies zu true, wenn Sie HTTPS verwenden --> </cookie-config> </session-config> <context-param> <param-name>org.primefaces.extensions.DELIVER_UNCOMPRESSED_RESOURCES</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>primefaces.THEME</param-name> <param-value>nova-light</param-value> </context-param> </web-app> LoginController.java(Login.war) package login.web; import java.io.IOException; import java.io.Serializable; import jakarta.enterprise.context.RequestScoped; import jakarta.faces.application.FacesMessage; import jakarta.faces.context.FacesContext; import jakarta.inject.Inject; import jakarta.inject.Named; import login.util.LoginService; import login.util.entities.User; @RequestScoped @Named public class LoginController implements Serializable { private static final long serialVersionUID = -5346634778960677989L; private static final String URL = "myServerURL:8080"; @Inject private LoginService loginService; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public void login() { FacesContext context = FacesContext.getCurrentInstance(); User user = loginService.findUserByUsername(username); if (user != null && user.getPassword().equals(SHA256Util.hashPassword(password))) { context.getExternalContext().getSessionMap().put("user", user); try { System.out.println("Login successful, redirecting to start page."); context.getExternalContext().redirect(URL + "/Start"); } catch (IOException e) { System.out.println("Redirect failed: " + e.getMessage()); e.printStackTrace(); } } else { System.out.println("Invalid username or password."); context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid username or password", null)); } } public void logout() { FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); try { FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml"); } catch (IOException e) { System.out.println("Logout redirect failed: " + e.getMessage()); e.printStackTrace(); } } } RedirektBean.java(Start.war) package startleiste.glassfish; import java.io.IOException; import java.security.Principal; import jakarta.enterprise.context.RequestScoped; import jakarta.faces.context.ExternalContext; import jakarta.faces.context.FacesContext; import jakarta.inject.Named; @Named @RequestScoped public class LoginRedirectBean { public void redirectToLogin() { ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); try { Principal userPrincipal = externalContext.getUserPrincipal(); if (userPrincipal == null) { System.out.println("User ist nicht authentifiziert, Umleitung zur Login-Seite"); externalContext.redirect("myServerURL/Login"); } } catch (IOException e) { e.printStackTrace(); } } } 大家好。我在为 Glassfish7 应用程序服务器配置 SSO 时遇到了很大的问题。我想开发一个软件门户,使用 JSF、primefaces 和 Glassfish7 作为应用程序服务器。 计划是配置一个中央登录页面 - >登录后用户进入导航页面。如果您之前没有登录就访问导航页面,应用程序会将您重定向到登录页面。 我在不同的战争中都这样做过 登录.war 开始战争 如果我成功登录 - 应用程序立即将我重定向到 Login.war 这是为什么? 您确定您的登录应用程序使用领域来验证用户身份吗?我在登录方法中只看到context.getExternalContext().getSessionMap().put("user", user);。您的代码根本不使用jdbcRealm,您直接进入数据库。 GlassFish 无法知道用户是否经过身份验证,因此无法将信息传递给另一个应用程序进行 SSO。不幸的是,互联网上的大多数示例似乎都显示了与您的代码类似的内容,但这仅适用于单个应用程序,并且仅当您有一个自定义 servlet 过滤器(如果未经身份验证则阻止访问安全页面)时才有效。换句话说,整个安全机制完全是自定义的,不依赖服务器,服务器也不知道。 这里有一个教程,介绍如何执行您想要的操作,以便您的应用程序使用 JDBC 领域进行身份验证:https://docs.oracle.com/javaee/6/tutorial/doc/glxce.html 您应该在您的login()方法中调用以下内容: FacesContext context = FacesContext.getCurrentInstance(); HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest(); try { request.login(username, password); // Redirect to the home page or a secured page return "welcome?faces-redirect=true"; } catch (ServletException e) { // Authentication failed
如何在 Jersey 中处理 HeaderValueException
我们有 Jersey + Spring 的 REST 端点,当我们使用格式错误的标头值向端点发出请求时。例如接受:application/json/foobar 带有 HeaderValueException 的异常...