使用Java EE Payara Micro时,我有什么选择来设置JDBC驱动程序和资源?
我刚下载了GlassFish 5.0存档 - 完整平台,解压缩它,我通过命令行运行它.
asadmin start-domain
问题:
Exception in thread "main" java.lang.NullPointerException
at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.initializeServiceLocator(AbstractModulesRegistryImpl.java:152)
at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.newServiceLocator(AbstractModulesRegistryImpl.java:144)
at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:218)
at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:224)
at com.sun.enterprise.module.single.StaticModulesRegistry.createServiceLocator(StaticModulesRegistry.java:88)
at com.sun.enterprise.admin.cli.CLIContainer.getServiceLocator(CLIContainer.java:217)
at com.sun.enterprise.admin.cli.CLIContainer.getLocalCommand(CLIContainer.java:255)
at com.sun.enterprise.admin.cli.CLICommand.getCommand(CLICommand.java:231)
at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:371)
at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:306)
at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:57)
Run Code Online (Sandbox Code Playgroud)
我试图在文件中设置路径asenv.bat - > set path = C:/.../ Java/bin - 没有帮助.试图启动:asadmin start-domain domain1 - 没有帮助.
安装:jdk-9.0.1也试过8号,没有帮助.该怎么办???
我试图弄清楚我的动态网络应用程序的另一个异常的原因 - https://github.com/double-whammy/affablebean 我做了一个小改动,我得到了一个新的异常 - javax.ejb.AccessLocalException:Client not not授权进行此调用
在线答复说我做了以下 - http://ask.ozar.net/11/javax-accesslocalexception-client-authorized-invocation
尝试删除生成的策略文件.您应该能够在C:\ glassfish-3\glassfish\domains\domain1\generated\policy下找到它们.用domain1替换您的域名
您可以在domains/domainx/generated/policy /// {granted.policy,excluded.poliy}下找到策略文件.正授权在grant.policy中,否定授权在excluded.policy(如果有)中.(在domaninx,x = 1,2,3等...)
在grant.policy中查找"EJBMethodPermission的非限定授权,其中name =会话bean的EJbName;我认为可能是JpaPersonDao.并且使用适用于save方法的方法规范.
我尝试了第二个,我在glassfish文件夹下看到了很多文件夹:C:\ glassfish4\glassfish\domains\domain1\generated\policy
C:.
????AffableBean
? ????AffableBean
? ? granted.policy
? ?
? ????AffableBean_internal
? granted.policy
?
????__admingui
? ????__admingui
? excluded.policy
? granted.policy
?
????__default-web-module
????__default-web-module
granted.policy
Run Code Online (Sandbox Code Playgroud)
如您所见,有许多grant.policy文件.我应该修复哪一个?它是第一个文件夹下的那个吗?
有谁知道在不久的将来是否会在Eclipse中支持GlassFish 5(GlassFish Tools支持3.1和4.x)?
除了GlassFish Tools之外,还有其他方法可以将Glassfish集成到Eclipse中吗?
我正在运行一个Java EE应用程序,该应用程序在Payara 4.1.1.172上使用Hibernate 5.2.10.Final和Apache Derby存储后端.我看到的错误信息如
Caused by: java.sql.SQLDataException: A truncation error was encountered trying to shrink VARCHAR () FOR BIT DATA '(Binärer Datenwert wird nicht angezeigt)' to length 255.
Run Code Online (Sandbox Code Playgroud)
这表示Hibernate或Derby或两者都没有在消息的所有部分使用英语错误消息.
我试过了
添加一个
static {
System.setProperty("user.language", "en");
System.setProperty("user.region", "en_US");
}
Run Code Online (Sandbox Code Playgroud)
到一个类,但我似乎没有找到一个确定的方法来在任何异常发生之前加载它,我宁愿保持代码的设置.这同样适用于Locale.setDefault.
-Duser.language=enPayara JVM选项?server-config我看到异常消息的开头是英文的.我希望完整的信息是英文的,包括所有可能的部分.我对解决异常并不感兴趣,这是一个例子.我不是在寻找德语部分的翻译.
非英语消息部分很可能是由服务器启动的德语Ubuntu 18.04引起的.更改操作系统的系统区域设置或服务器可以包装的容器是一种解决方法,但不是解决方案.
甲SSCCE可以被发现在https://gitlab.com/krichter/derby-embedded-data-source-locale-j4ee的CI和示例输出在https://gitlab.com/krichter/derby-embedded-data- source-locale-j4ee/ - /jobs/83525395.SSCCE仅包含服务器启动周围的样板和一个简单的无效本机查询,导致出现德语错误消息,而不是问题中提供的信息.
如果可能,请使用SSCCE验证答案.
我的动机是拥有英语异常消息,以便在开发过程中更轻松地通过搜索引擎找到解决方案而不会篡改系统语言.
我从4.1.1升级到似鲭水狼牙鱼和4.1.2.181打电话给我验证终点时,现在我就在401.我的auth端点返回200(ok)但调用应用程序从Payara获得401(据我所知)
父pom.xml:
...
<dependency>
<groupId>fish.payara.extras</groupId>
<artifactId>payara-embedded-all</artifactId>
<version>4.1.2.181</version>
<scope>provided</scope>
</dependency>
...
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.25</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
子项目pom.xml
...
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.27</version>
<scope>provided</scope>
</dependency>
...
Run Code Online (Sandbox Code Playgroud)
当我切换回4.1.1版时,问题就消失了
请协助我如何在日志文件中提供更多信息或解决此问题.
更新
<jaxrs-roles-allowed-enabled>false</jaxrs-roles-allowed-enabled>到glassfisf-web.xml仅在日志文件中发出警告我在日志文件中看到以下内容:
无法加载服务类fish.payara.appserver.roles.api.extension.RolesCDIExtension org.osgi.framework.BundleException:bundle fish.payara.appserver.cdi-auth-roles中未解决的约束[374]:无法解析374.0:缺少要求[374.0] osgi.wiring.package; (osgi.wiring.package = fish.payara.cdi.auth.roles)
我设法打开Jersey的跟踪日志记录,并将以下内容作为日志文件中的最后一条跟踪:
[2018-07-17T14:41:02.968 + 0200] [Payara 4.1] [FINE] [] [org.glassfish.jersey.tracing.general] [tid:_ThreadID = 28 _ThreadName = http-thread-pool :: http- listener-1(2)] [timeMillis:1531831262968] [levelValue:500] [CLASSNAME:org.glassfish.jersey.message.internal.TracingLogger $ TracingLoggerImpl] [METHODNAME:logImpl] [[FINISHED响应状态:200/SUCCESSFUL | OK [ - - 女士]]]
降级到Payara 4.1.2.174有效,但目标服务器可能不支持 …
我已经更新了我的项目的库和依赖项,包括:
该应用程序可以成功构建,我尝试将其部署到运行OpenJDK 17的Payara Server 6.2022.2。但是,不断抛出以下错误,并且Spring无法启动。
我已经确认Springboot是最新版本并且支持Java 17环境。是否缺少任何依赖项?
我的 pom.xml :
Run Code Online (Sandbox Code Playgroud)<modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.1</version> <relativePath/> </parent> <version>1.0</version> <packaging>war</packaging> <properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>tomcat-embed-logging-juli</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> <exclusion> <artifactId>tomcat-embed-websocket</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> <exclusion> <artifactId>tomcat-embed-el</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-loader</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> …
我有一个实体类,它从四级继承继承,其中顶级父级定义主键(@Id),当我收到此错误时,我无法弄清楚我做错了什么:
实体类 [D 类] 没有指定主键。它应该定义 @Id、@EmbeddedId 或 @IdClass。如果您使用任何这些注释定义了 PK,请确保您的实体类层次结构中没有混合访问类型(注释的字段和属性)。
这是层次结构:
A->B->C->(实体)D
这是我的非实体类,它将值赋予其子级:
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@MappedSuperclass
public class A implements Serializable {
@Id
@GeneratedValue
protected Long id;
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
protected Date deleted;
public Date getDeleted() {
return deleted;
}
public void setDeleted(Date deleted) {
this.deleted = deleted;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
这是它的孩子之一:
@MappedSuperclass
public abstract class B extends A implements Serializable {
}
B->C …Run Code Online (Sandbox Code Playgroud) 在已部署的 JavaEE 应用程序中请求不同的 Web 服务 (Jersey 2.23.1) 时,我从 Payara Server 4.1.1.164 收到此异常。
我不知道异常的原因,也不知道它何时出现,因为在某些具有相同 payara 服务器配置的测试环境中,它会出现,但在其他环境中从未出现过。
有人可以帮我解决这里的问题吗?任何帮助将不胜感激。
[2017-03-22T17:20:03.200+0100] [Payara 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=28 _ThreadName=http-thread-pool::http-listener-1(3)] [timeMillis: 1490199603200] [levelValue: 900] [[
StandardWrapperValve[Alexia-BE]: Servlet.service() for servlet Alexia-BE threw exception
java.io.IOException: Write timeout exceeded when trying to flush the data
at org.glassfish.grizzly.http.io.OutputBuffer.blockAfterWriteIfNeeded(OutputBuffer.java:1004)
at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:715)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:355)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:342)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:161)
at com.sun.jersey.spi.container.servlet.WebComponent$Writer.write(WebComponent.java:307)
at com.sun.jersey.spi.container.ContainerResponse$CommittingOutputStream.write(ContainerResponse.java:135)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
at java.io.BufferedWriter.write(BufferedWriter.java:230)
at java.io.Writer.write(Writer.java:157)
at com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:190)
at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:128)
at …Run Code Online (Sandbox Code Playgroud) 我读了很多关于如何在payara 5上将jackson替换为moxy但从未实现过一个好的解决方案,所以我创建了一个小项目,希望有人可以帮助我。
pom.xml
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>${version.javaee}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>org.eclipse.microprofile</groupId>
<artifactId>microprofile</artifactId>
<type>pom</type>
<version>1.4</version>
</dependency>
<dependencies>
Run Code Online (Sandbox Code Playgroud)
应用程序.java
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import org.glassfish.jersey.jackson.JacksonFeature;
@ApplicationPath("/api")
public class App extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
resources.add(JacksonFeature.class);
resources.add(SimpleService.class);
return resources;
}
}
Run Code Online (Sandbox Code Playgroud)
简单服务.java
@Path("sample")
public class SimpleService {
@Path("greet2")
@GET
@Produces(MediaType.APPLICATION_JSON)
public PojoEntity doGreet2() {
PojoEntity pojoEntity = new PojoEntity();
pojoEntity.setTeste1("TesteValue1");
pojoEntity.setTeste2("TesteValue2");
return pojoEntity;
}
}
Run Code Online (Sandbox Code Playgroud)
PojoEntity.java …
payara ×10
java ×8
java-ee ×4
glassfish ×2
derby ×1
eclipse ×1
glassfish-4 ×1
glassfish-5 ×1
hibernate ×1
jackson ×1
jakarta-ee ×1
javax ×1
jdbc ×1
jersey ×1
jpa ×1
microprofile ×1
moxy ×1
payara-micro ×1
spring ×1
spring-boot ×1