我已将CDI功能添加到server.xml文件中<feature>cdi-1.2</feature>.
我的行家模块包含的beans.xml里面<module_name>/src/main/resources/META-INF的文件夹.
这是beans.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
</beans>
Run Code Online (Sandbox Code Playgroud)
但是当我使用@Inject注释它不起作用时,我的bean总是如此null.
码:
package ch.webapp.presentation;
...
@Path("/test/")
public class MyController {
@Inject
private MyService myService;
@GET
@Path("/foo/{count}")
@OAuthSecurity(scope = "login")
@Produces("application/json")
public Response news(@PathParam("count") int count) {
return Response
.ok(myService.getBar(count))
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
那是我的豆子
package ch.webapp.service;
...
@RequestScoped
public class MyService {
public String getBar(int count) {
return "foo";
}
}
Run Code Online (Sandbox Code Playgroud)
我通过扩展MFPJAXRSApplication类来初始化jax-rs …
cdi websphere-liberty ibm-mobilefirst mobilefirst-adapters open-liberty
我在Java 12上大吃一惊,并注意到javac最低目标Java级别已提高到1.7。
Execution failed for task ':com.foo:compileJava'.
> error: release version 6 not supported
Run Code Online (Sandbox Code Playgroud)
为什么我要编译为您要求的Java 6?
即使我的代码库要求的最低Java级别为1.7,我仍然希望将内核以较旧的Java级别进行编译,以便JVM可以启动,并且我可以输出一条更好的错误消息,指示必须使用Java 7+,而不是更多。神秘的不兼容类版本错误。
展望未来...
Java 6并不是太大的问题,但是我主要关心的是,如果Java仅支持N-5版本,那么到Java 14(大约从现在开始),我将不再能够编译为Java 8。仍然是一个非常流行的运行时版本。
我相信Maven可以通过工具链解决此类问题,但是Gradle是否提供类似的功能?
编辑:我还注意到JEP 182尚未批准,但是如果批准将意味着仅支持N-3版本。
我有一个工作项目依赖于这样的对等组件生成的 Maven 工件:
repositories {
ivy {
url "../cnf/local"
}
}
configurations {
ejbTools
}
dependencies {
ejbTools 'test:com.ibm.ws.ejbcontainer.fat_tools:1.+'
}
Run Code Online (Sandbox Code Playgroud)
test:com.ibm.ws.ejbcontainer.fat_tools:1.+Gradle 6.0 无法解决依赖项,并显示以下错误:
> Task :com.ibm.ws.ejbcontainer.async_fat:addEJBTools FAILED
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/aguibert/dev/git/open-liberty/dev/com.ibm.ws.ejbcontainer.async_fat/build.gradle' line: 32
* What went wrong:
Execution failed for task ':com.ibm.ws.ejbcontainer.async_fat:addEJBTools'.
> Could not resolve all files for configuration ':com.ibm.ws.ejbcontainer.async_fat:ejbTools'.
> Could not find any matches for test:com.ibm.ws.ejbcontainer.fat_tools:1.+ as no versions of test:com.ibm.ws.ejbcontainer.fat_tools are available.
Searched in the following locations:
- …Run Code Online (Sandbox Code Playgroud) 我有一些依赖于sun.misc.ServiceAPI的旧(pre java 6)代码,例如:
sun.misc.Service.providers(MyServiceProvider.class);
Run Code Online (Sandbox Code Playgroud)
Java 9中正在删除此类(不仅仅是内化).
我可以使用哪种备用Java SE API?
我以前在本地环境中使用Tomcat v9.0,同时使用
getServletContext()。getRealPath(“”)
检索路径,服务器返回
.... metadata.plugins \ org.eclipse.wst.server.core \ tmp1 \ wtpwebapps \ WebApp \
但是,当客户端运行WebSphere Application Server Liberty时,我在机器上安装了相同的软件,但是在Tomcat中返回路径的相同代码会返回
空值
在Websphere环境中。您能否帮助我了解为什么会发生这种情况以及如何在Websphere环境中获得通行证。我也检查了以下链接https://www.ibm.com/developerworks/community/forums/html/topic?id=eb04c8ae-02d4-421b-af2c-2ef626a3db1b&ps=50&tags=&query=&filter=&sortBy=&order=asc,但找不到解决方案。
我正在开发一个项目,我们计划使用 WLP(WebSphere liberty)而不是传统的 WAS。
该代码具有用于不同组件的 ejb 模块(ejb 2 和 3)。一个组件的 EJB 客户端被其他一些组件用来与 EJB 服务器模块进行通信。
我知道 liberty 有一些 ejb 功能。但是 liberty 是否具有与 WAS 9 中提供的相同级别的 EJB 支持/功能?
自由使用 EJB 有哪些限制/问题?
我在资源类中有一个 PATCH 端点,其中一个抽象类作为请求主体。我收到以下错误:
22:59:30 SEVERE [or.ec.ya.in.Unmarshaller] (on Line: 64) (executor-thread-63) Can't create instance
Run Code Online (Sandbox Code Playgroud)
似乎因为我声明为参数的身体模型是抽象的,所以它无法反序列化。
我期待得到 Element_A 或 Element_B
如何声明主体是多态的?
这是元素层次结构
public abstract class BaseElement {
public String name;
public Timestamp start;
public Timestamp end;
}
public class Element_A extends BaseElement{
public String A_data;
}
public class Element_B extends BaseElement{
public long B_data;
}
Run Code Online (Sandbox Code Playgroud)
这是我的端点的资源类
@Path("/myEndpoint")
public class ResourceClass {
@PATCH
@Path("/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public Response updateEvent(@Valid BaseElement element, @Context UriInfo uriInfo, @PathParam long id) {
if (element instanceof Element_A) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试将小型应用程序从Tomcat迁移到WebSphere。为了做到这一点,我正在从头开始重新构建它,分别解决主要组件。我在webSphere Liberty上的数据访问/ JNDI方面很挣扎。我懂了
javax.naming.NameNotFoundException:javax.naming.NameNotFoundException:java:comp / env / jdbc / test
SERVER.xml
<featureManager>
<feature>webProfile-8.0</feature>
<feature>localConnector-1.0</feature>
<feature>adminCenter-1.0</feature>
<feature>javaee-8.0</feature>
<feature>jndi-1.0</feature>
<feature>concurrent-1.0</feature>
Run Code Online (Sandbox Code Playgroud)
<dataSource id="test" jndiName="jdbc/test" type="javax.sql.DataSource">
<jdbcDriver libraryRef="MySQLLib" />
<properties databaseName="test" serverName="localhost" portNumber="3306" user="user" password="mypassword" />
<jdbcDriver>
<library id="MySQLLib">
<fileset dir="/Library/JDBC/" includes="mysql-connector-java-5.1.14-bin.jar" />
</library>
</jdbcDriver>
</dataSource>
Run Code Online (Sandbox Code Playgroud)
数据配置类
@Configuration
public class DataSourceConfig {
@Resource(lookup = "java:comp/env/jdbc/test", name="java:comp/env/jdbc/test")
private DataSource dataSource;
Run Code Online (Sandbox Code Playgroud)
我也尝试过这种方法:
@Bean
public DataSource dataSource() throws NamingException {
return (DataSource) new JndiTemplate().lookup("java:comp/env/jdbc/test");
}
Run Code Online (Sandbox Code Playgroud) 我有一个大约500-700mb的war文件,在生产环境中部署需要非常长(1-1.5小时).
大多数jar文件都是第三方库,除非有升级,否则很少会更改.
我正在考虑将第三方库移动到服务器的类路径以减小war文件的大小并缩短部署时间.
这是一个好方法吗?
我使用Websphere和maven作为构建工具.如果我能够将这些第三方库从我的webapp移动到我的服务器类路径,我将能够将依赖范围从编译更改为提供.
服务器仅用于我的系统,我不怕任何类路径冲突.
我有一个在 Liberty WebSphere Server 17.0.0.2 上使用 AngularJS + JSP 的项目,现在我必须对其进行升级。该项目需要升级到 Angular 4 + Liberty,我不知道如何正确执行。
我现在尝试过的是:
使用 Angular-CLI 构建项目以生成dist文件夹。然后,我将dist放在WEB-INF > views 上。我还对 spring-context.xml、web.xml 和 server.xml(在 Liberty 端)进行了引用,但在尝试访问 localhost:9090/AngularPoC/dist/index 时得到的只是 404 错误
先感谢您。
任何 Body 解释我为什么 ConstraintValidator 类的 isValid() 方法被调用两次?
例如,这是我的示例代码:
@POST
@Path("/json/dog")
@Produces("application/json")
@Consumes("application/json")
public Response getDogByJson(@ValidAnimal JsonObject jsonObject) {
return Response.ok("ok").build();
}
@Constraint(validatedBy = {AnimalValidation.class})
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface ValidAnimal {
String message() default "This is not valid !";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
public class AnimalValidation implements ConstraintValidator<ValidAnimal, JsonObject> {
@Override
public void initialize(ValidAnimal constraintAnnotation) {
}
@Override
public boolean isValid(JsonObject jsonObject, ConstraintValidatorContext context) {
System.out.println(">>>>>> : " + jsonObject);
return true; …Run Code Online (Sandbox Code Playgroud) 有没有办法将WebSphere 8.5.5.10升级到版本9?
使用IBM Installation Manager安装修订包时,我只添加repository.config,但在为版本9添加repository.config之后,我只有安装选项.
假设某段代码从池中获取连接并且没有将其返回池中.
我想知道如果在一些空闲时间后连接上没有识别出任何活动,那么自由中是否有任何设置会强制连接回池,可能是10秒.
我正在使用自由8.5.5.9