我已经将@ApplicationScopedCDI注释添加到一个简单的bean:
@ApplicationScoped
public class History {
Run Code Online (Sandbox Code Playgroud)
并尝试将其@Inject转换为JAX-RS(resteasy)bean:
@RequestScoped
@Path("/history")
public class HistoryAPI {
@Inject
private History history;
Run Code Online (Sandbox Code Playgroud)
但历史仍然无效.我beans.xml在WEB-INF中有一个文件.我已经尝试了很多关于这个主题的变化,但是虽然app服务器(Wildfly)承认它是从CDI开始我无法让注入工作.我缺少什么想法?谢谢.
ETA:我试过一个空的beans.xml和几个变种,最新的是:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:weld="http://jboss.org/schema/weld/beans"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
</beans>
Run Code Online (Sandbox Code Playgroud) 我试图通过扩展现有的Java程序来实现概念验证内存感知调度功能.该程序使用缓冲区的形式byte [].因为我的目的byte []是有问题的,因为
为了实现我的目标,我希望缓冲区是懒惰分配的内存(仅在写入时分配的页面)并且可以按需释放.这与C++中的情况类似.另外,尽可能地,我想尽量减少对现有代码库的更改.
我看着nio.ByteBuffer不安全的班级.不适合我的情况,因为
java.nio.ByteBuffers似乎没有懒惰的分配.当我分配一个空的1GB缓冲区时,程序的RSS立即变为1GB.Unsafe.allocateMemory懒惰分配,但我不知道如何引用它byte [].有什么方法可以解决这个问题吗?以任何方式查看分配的内存Unsafe.allocateMemory()为byte []?或者将现有更改byte []为指向分配给Unsafe的内存?
谢谢
我正在使用 OkHttp GET 请求下载文件:
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
...
OkHttpClient okClient = new OkHttpClient();
Request request = Request.Builder().url(url).get();
Response response = okClient.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)
我从响应正文中读取并用 一个 装饰它,BufferedInputStream缓冲区大小为 4096:
BufferedInputStream in = new BufferedInputStream(response.body().byteStream(), 4096);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从缓冲区读取时,第一次读取返回 1179 个字节。之后,我一次只能读取 2048 个字节:
byte[] buffer = new byte[4096];
while (true) {
int bytesRead = in.read(buffer); //bytesRead is always 2048, except the first read
if (bytesRead == -1) break;
}
Run Code Online (Sandbox Code Playgroud)
几个相关问题:
InputStream被分页的读取到 2048 字节的大小,而不是BufferedInputStream包装器指定的值?OkHttpClient …在以前版本的jackson(1.9.2)中,以下代码运行良好:
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.DeserializationContext;
...
@JsonDeserialize(using = RoleDeserializer.class)
public interface RoleDto {}
public class RoleDeserializer extends SomeSharedDeserializer<RoleDto> {}
public class SomeSharedDeserializer<T> extends JsonDeserializer<T> {
@Override
public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException
{
return jp.readValueAs(getImplementation());
}
public Class<? extends T> getImplementation(){ ... returns some generated implementation of RoleDto }
}
Run Code Online (Sandbox Code Playgroud)
在我们迁移到最后一个jackson版本(Wildfly 8.2提供的1.9.13)后,我们得到了一个例外:
com.fasterxml.jackson.databind.JsonMappingException:无法构造RoleDto的实例,问题:抽象类型需要映射到具体类型,具有自定义反序列化器,或者使用其他类型信息进行实例化
好的,就像在jackson使用的新包装一样,我们将它们升级为:
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer;
Run Code Online (Sandbox Code Playgroud)
解串器现在可见(先前的异常消失了),但是,我们得到了StackOverflowError异常.com.fasterxml.jackson.databind.ObjectMapper读取值(第3023行):
DeserializationContext ctxt = createDeserializationContext(jp, cfg);
JsonDeserializer<Object> deser = _findRootDeserializer(ctxt, valueType);
// ok, let's get the …Run Code Online (Sandbox Code Playgroud) 我有一个会话bean的Java客户端,我想发送一个inputStream,如下所示:
注意:我正在使用EJB 3.0
public class SenderSimulator {
public static void main(String[] arg){
Properties p = new Properties();
p.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
p.put("java.naming.provider.url", "jnp://localhost:1099");
p.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
try {
Context context = new InitialContext(p);
RogersBatchImporter bean = (RogersBatchImporter)context.lookup("RogersImporterBean/remote");
InputStream in = new FileInputStream("filePath");
System.out.println("Result: " + bean.processBatch(in)); // line 29
} catch (NamingException e) {
e.printStackTrace();
} catch (LogConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
}
但它抛出以下异常:
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at $Proxy0.processBatch(Unknown Source)
at package.main(SenderSimulator.java:29)
Caused by: …Run Code Online (Sandbox Code Playgroud) 我有一个 gradle 构建,其中使用另一个 gradle 文件中的属性:
构建.gradle
apply from: "props.gradle"
Run Code Online (Sandbox Code Playgroud)
props.gradle只是文件中具有 groovy 语法的一组属性:
ext {
jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
system_db_admin_user = "system"
}
Run Code Online (Sandbox Code Playgroud)
稍后在构建中我可以像这样访问此属性:
project.property("jdbcJarFile")
Run Code Online (Sandbox Code Playgroud)
props.gradle我需要的是一种覆盖命令行中定义的任何属性的方法。
例如
gradle build -PjdbcJarFile=new/path
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时,我仍然得到props.gradle.
我需要能够覆盖每个属性,并且该文件中有数十个属性。此处无法手动检查每个属性。
我该如何解决这个问题?
Gradle 版本是 2.12。
我在一个项目的代码中。尝试将对象RRREC类型转换为RR_REC类型时出现错误。
本RRREC类:
public class RRREC{
protected String owner;
protected RRINFRATYPE infraType;
// getter and setter
}
Run Code Online (Sandbox Code Playgroud)
RR_REC类:
public class RR_REC{
protected String localOwner;
protected RR_INFRA_TYPE localInfraType;
// getter and setter
}
Run Code Online (Sandbox Code Playgroud)
本RRINFRATYPE类:
public enum RRINFRATYPE {
V_6_ADDRESS("V6ADDRESS"),
OBJECT("OBJECT"),
ZONE("ZONE"),
V_4_REVERSEZONE("V4REVERSEZONE"),
V_6_REVERSEZONE("V6REVERSEZONE"),
NODE("NODE"),
ALL("ALL");
private final String value;
RRINFRATYPE(String v) {
value = v;
}
public String value() {
return value;
}
public static RRINFRATYPE fromValue(String v) {
for (RRINFRATYPE c: RRINFRATYPE.values()) { …Run Code Online (Sandbox Code Playgroud) 我们有一个包含大量遗留EJB2内容的项目以及用EJB3编写的新代码.所以我们想将它从JBoss AS 7迁移到WildFly.
WildFly是否支持EJB2?
我试图找到有关这方面的信息,但只发现2013年6月10日的信息
"支持...已在此版本中成为可选项,其描述将移至单独的EJB可选功能文档"
我目前正在开展一个大学项目,我需要创建一个简单的登录屏幕,将用户重定向到另一个登陆页面.由于我是网络编程的新手,我搜索了一些函数,发现最常用的命令是window.location.href,这对我的代码不起作用.这里是:
<button class="btn btn-lg btn-primary btn-block" type="submit" onclick="validation(this.form)">Sign in</button>
</form>
<script language = "Javascript">
function validation(form){
if(form.inputEmail.value=="user@user.com" && form.inputPassword.value=="user123"){
window.location.href('form.html');
}
else {
alert("Invalid e-mail or password.");
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我已经检查了路径,但输入有效用户名和密码时唯一有效的方法是 window.open()