具有以下定义:
public interface BaseService<T, ID> {
T findOne(ID id);
}
public class BaseServiceImpl<T,ID extends Serializable> implements BaseService<T, ID> {
@Override
public T findOne(ID id) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么BaseServiceImpl.class.getDeclaredMethods()返回2种方法:
public java.lang.Object BaseServiceImpl.findOne(java.io.Serializable)public java.lang.Object BaseServiceImpl.findOne(java.lang.Object)有没有办法过滤掉这些?
在将其标记为重复之前:
我已经阅读了至少15个类似的线程,每个线程都使用旧的Parse代码(现已弃用的setDefaultPushCallback),或者问题是在一个活动中调用Parse.initialize(...)而不是在应用类.但是,这并不适用于我的情况.官方的例子(我正在使用)显然是正确的,因此代码已经在Application类中.
我已经从Parse的官方指南中下载了Push Starter示例,并在模拟器上进行了尝试.我只在应用程序运行时收到推送.它关闭的那一刻(从"最近的应用程序"列表中删除,而不是强行杀死),我不再受到推动.这使整个功能相当无用......我尝试使用和不使用GCM,行为是一样的.
有什么可能是错的线索?所有类都是库存示例,没有被我覆盖或添加(除了id/key和我从指南中复制的ParsePush.subscribeInBackground调用).奇怪的是,示例代码不包含ParsePush.subscribeInBackground,而QuickStart没有提到它.它甚至提供了一个Test按钮,该按钮可以发送一个我从未收到过的推送,无论是否有subscribeInBackground.到目前为止,我能够获得推送的唯一方法是使用subscribeInBackground并通过Web控制台手动发送推送,并且只有在应用程序运行时才这样做.Web控制台还告诉我们有2个已注册的设备......这是不真实的.
表现:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.parse.starter"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="21"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!--
IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
to match your app's package name + ".permission.C2D_MESSAGE".
-->
<permission android:protectionLevel="signature"
android:name="com.parse.starter.permission.C2D_MESSAGE" />
<uses-permission android:name="com.parse.starter.permission.C2D_MESSAGE" />
<application
android:name=".ParseApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:allowBackup="true">
<activity
android:name=".ParseStarterProjectActivity"
android:label="@string/app_name" > …Run Code Online (Sandbox Code Playgroud) Hibernate Gradle插件相当于hibernate-enhance-maven-plugin并提供了构建时代码增强功能.在官方的文档不提apply plugin: 'something'线.如果我按照指南说的那样做,我得到:
无法为参数找到方法hibernate()...
我试着猜测插件名称apply plugin: 'enhance'(正如这个线程建议的那样)和apply plugin: 'org.hibernate.orm'(正如这个测试建议的那样),但它只是说带有该id的插件是未知的.
有没有人设法成功设置此插件?
我的build.gradle如下:
allprojects {
group 'xxx'
version '1.0-SNAPSHOT'
}
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
...
}
}
project(':xxx-model') {
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath "org.hibernate:hibernate-gradle-plugin:5.0.7.Final"
}
}
apply plugin: 'org.hibernate.orm'
hibernate {
enhance {}
}
}
... more unrelated project blocks …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我必须轮询远程服务器以检查任务是否已完成。完成后,我将进行另一个调用以检索结果。
我最初认为我应该使用SingleThreadScheduledExecutorwith scheduleWithFixedDelay进行轮询:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
ScheduledFuture future = executor.scheduleWithFixedDelay(() -> poll(jobId), 0, 10, TimeUnit.SECONDS);
public void poll(String jobId) {
boolean jobDone = remoteServer.isJobDone(jobId);
if (jobDone) {
retrieveJobResult(jobId);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,因为我只能提供Runnable给scheduleWithFixedDelay不能返回任何东西,我不明白时,future就完成了,如果有的话。打电话future.get()甚至意味着什么?我在等什么结果?
第一次检测到远程任务完成时,我想执行一个不同的远程调用并将其结果设置为的值future。我认为我可以为此使用CompletableFuture,以便将其转发给我的poll方法,然后将其转发给retrieveTask最终将完成它的方法:
CompletableFuture<Object> result = new CompletableFuture<Object>();
ScheduledFuture future = executor.scheduleWithFixedDelay(() -> poll(jobId, result), 0, 10, TimeUnit.SECONDS);
public void poll(String jobId, CompletableFuture<Object> result) {
boolean jobDone = remoteServer.isJobDone(jobId);
if (jobDone) {
retrieveJobResult(jobId, …Run Code Online (Sandbox Code Playgroud) 我有以下代码(由我之前的问题得出),它在远程服务器上安排任务,然后使用轮询完成ScheduledExecutorService#scheduleAtFixedRate.任务完成后,会下载结果.我想将a返回Future给调用者,以便他们可以决定阻止的时间和时间,并为他们提供取消任务的选项.
我的问题是,如果客户端取消方法Future返回的download,whenComplete则不执行块.如果我删除thenApply它.很明显,我对Future构图有些误解......我应该改变什么?
public Future<Object> download(Something something) {
String jobId = schedule(something);
CompletableFuture<String> job = pollForCompletion(jobId);
return job.thenApply(this::downloadResult);
}
private CompletableFuture<String> pollForCompletion(String jobId) {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
CompletableFuture<String> completionFuture = new CompletableFuture<>();
ScheduledFuture<?> checkFuture = executor.scheduleAtFixedRate(() -> {
if (pollRemoteServer(jobId).equals("COMPLETE")) {
completionFuture.complete(jobId);
}
}, 0, 10, TimeUnit.SECONDS);
completionFuture
.whenComplete((result, thrown) -> {
System.out.println("XXXXXXXXXXX"); //Never happens unless thenApply is removed
checkFuture.cancel(true);
executor.shutdown();
});
return completionFuture; …Run Code Online (Sandbox Code Playgroud) 我得到以下内容,似乎无法找到答案.
Error [ValidationError{validationErrorType=FieldUndefined, queryPath=[find_by_id], message=Validation error of type FieldUndefined: Field 'find_by_id' in type 'Query' is undefined @ 'find_by_id', locations=[SourceLocation{line=1, column=2}], description='Field 'find_by_id' in type 'Query' is undefined'}]
Run Code Online (Sandbox Code Playgroud)
我的守则.
询问
@GraphQLQuery(name = "find_by_id")
public Event findById(@GraphQLArgument(name = "id") Long id) {
Run Code Online (Sandbox Code Playgroud)
架构
@EJB
private EventFacade eventFacade; // Normal stateless bean
GraphQLSchema guestSchema = new GraphQLSchemaGenerator()
.withOperationsFromSingleton(eventFacade)
.withValueMapperFactory(new JacksonValueMapperFactory())
.withDefaults()
.generate();
GraphQL graphQL = GraphQL.newGraphQL(guestSchema).build();
Run Code Online (Sandbox Code Playgroud)
要执行的代码
String query = "{find_by_id (id: 1){eventName}}";
ExecutionResult result = graphQL.execute(query);
Run Code Online (Sandbox Code Playgroud)
使用SPQR lib
事件POJO是基本的,eventName为String,抽象(Parent)类为id.实体类位于不同的jar(Entity Jar)中.执行查询和构建模式的代码位于EJB Jar中. …
使用 WebSphere Liberty Core (WLC: 8.5.5.1 (wlp-1.0.3.20130510-0831)) 时,我在日志中随机看到以下错误。在其他应用程序服务器上,这不会发生。我不知道这在代码中的什么地方发生...看起来 Spring 3.1.3 几乎正在尝试做一些乱序的事情。有没有人解决过这个问题?
[03/06/14 20:04:33:232 BST] 000000cb com.ibm.ws.webcontainer.util.ApplicationErrorUtils E SRVE0777E:应用程序类“com.ibm.wsspi.http.HttpOutputStream.validate:187”抛出异常java.io.IOException:流在 com.ibm.wsspi.http.HttpOutputStream.validate(HttpOutputStream.java:187) at com.ibm.wsspi.http.HttpOutputStream.flush(HttpOutputStream.java:555) 处关闭。 ibm.ws.webcontainer.osgi.response.WCOutputStream.flush(WCOutputStream.java:213) 在 org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper$SaveContextServletOutputStream.flush(SaveContextOnUpdateOrErrorResponseWrapper.java:354) 在 org.springframework.http Converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:180) 在 org.springframework.web.servlet.mvc.method。annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:137) at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.orgmeth.java:80.springframework) at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters. annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:94) at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69) at org.springframework.web.servlet.mvc.methodServletInvocable.annotation invokeAndHandle(ServletInvocableHandlerMethod.java:118) 在 org.springframework.web.servlet.mvc.method.annotation。RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter。 handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework .web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:575) ) 在 javax.servlet.http.HttpServlet。service(HttpServlet.java:668) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127) 在 com.ibm.ws.webcontainer .filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88) 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ) 在 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) 在 com.ibm.ws.webcontainer.filter。WebAppFilterChain.doFilter(WebAppFilterChain.java:85) …
我正在尝试使用GraphQL,需要帮助了解如何知道在即将执行突变时要提供的根值.
具体示例:您要更新当前登录用户的用户名.突变看起来像这样:
mutation TestMutation {
updateMyUsername(newName: "CoolName") {
username }
}
Run Code Online (Sandbox Code Playgroud)
这里提供的根对象是当前用户.但是当你收到变异而没有解析它并看到它的名字时,你怎么知道这个?基于URL无法做出决定,因为只存在一个端点.解析字符串只是为了将它再发送到将被解析的地方听起来最好浪费.
通常的做法是在URL或请求体中提供一些额外的参数来为应用程序提供更多的上下文吗?
Java 8 允许执行以下操作:
public List<@NonNull String> names;
Run Code Online (Sandbox Code Playgroud)
但是有没有办法在运行时访问此注释,或者它仅适用于编译器插件?
有一个新Method#getAnnotatedReturnType功能可以访问返回类型上的注释,所以我希望ParameterizedType现在有类似的东西getActualAnnotatedTypeArguments可以对泛型类型参数执行相同的操作,但它不存在......
我有这个案子:
public class SomeClass<T> {
public <@A1 S extends @A2 T> @A3 S myMethod() { ...}
}
Run Code Online (Sandbox Code Playgroud)
而我正试图@A2在界限上得到注释T.
这就是我所看到的,假设myMethod是SomeClass.class.getDeclaredMethod("myMethod").为了便于阅读,删除了类型转换.
myMethod.getGenericReturnType().getAnnotations()返回@A1(正如预期的那样,我猜)myMethod.getGenericReturnType().getBounds()[0].getAnnotations()没有回报(??不是@A2吗?)myMethod.getAnnotatedReturnType().getAnnotations()返回@A3(正如预期的那样,我猜)myMethod.getAnnotatedReturnType().getAnnotatedBounds()[0].getAnnotations()什么都不返回(我猜是例外)它似乎@A2迷路了......这听起来不合理.我做错了什么或这确实是一些奇怪的行为?
更新:这确实是一个JDK错误,我报告并且它被接受为JDK-8191466
java ×8
java-8 ×3
annotations ×2
concurrency ×2
generics ×2
graphql ×2
reflection ×2
android ×1
future ×1
gradle ×1
graphql-java ×1
graphql-spqr ×1
hibernate ×1