/**********************************************************\
| |
| hprose |
| |
| Official WebSite: http://www.hprose.com/ |
| http://www.hprose.org/ |
| |
\**********************************************************/
/**********************************************************\
* *
* HproseService.java *
* *
* hprose service class for Java. *
* *
* LastModified: Oct 16, 2016 *
* Author: Ma Bingyao <andot@hprose.com> *
* *
\**********************************************************/
package hprose.server;
import hprose.common.HandlerManager;
import hprose.common.HproseContext;
import hprose.common.HproseException;
import hprose.common.HproseFilter;
import hprose.common.HproseMethod;
import hprose.common.HproseMethods;
import hprose.common.HproseResultMode;
import hprose.io.ByteBufferStream;
import hprose.io.HproseMode;
import static hprose.io.HproseTags.TagArgument;
import static hprose.io.HproseTags.TagCall;
import static hprose.io.HproseTags.TagEnd;
import static hprose.io.HproseTags.TagError;
import static hprose.io.HproseTags.TagFunctions;
import static hprose.io.HproseTags.TagList;
import static hprose.io.HproseTags.TagOpenbrace;
import static hprose.io.HproseTags.TagResult;
import static hprose.io.HproseTags.TagTrue;
import hprose.io.serialize.Writer;
import hprose.io.unserialize.Reader;
import hprose.util.StrUtil;
import hprose.util.concurrent.Action;
import hprose.util.concurrent.AsyncFunc;
import hprose.util.concurrent.Call;
import hprose.util.concurrent.Func;
import hprose.util.concurrent.Promise;
import hprose.util.concurrent.Reducer;
import hprose.util.concurrent.Threads;
import java.io.IOException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
public abstract class HproseService extends HandlerManager implements HproseClients {
private static volatile ScheduledExecutorService timerService = Executors.newSingleThreadScheduledExecutor();
static {
Threads.registerShutdownHandler(new Runnable() {
public void run() {
ScheduledExecutorService timer = timerService;
timerService = Executors.newSingleThreadScheduledExecutor();
timer.shutdownNow();
}
});
}
public HproseService() {
add("call", new Callable<String>() {
public String call() throws Exception {
return UUID.randomUUID().toString();
}
}, "#", true);
}
private final ArrayList<HproseFilter> filters = new ArrayList<HproseFilter>();
private HproseMode mode = HproseMode.MemberMode;
private boolean debugEnabled = false;
private int errorDelay = 10000;
protected HproseServiceEvent event = null;
protected HproseMethods globalMethods = null;
private final static ThreadLocal<ServiceContext> currentContext = new ThreadLocal<ServiceContext>();
public static ServiceContext getCurrentContext() {
return currentContext.get();
}
public HproseMethods getGlobalMethods() {
if (globalMethods == null) {
globalMethods = new HproseMethods();
}
return globalMethods;
}
public void setGlobalMethods(HproseMethods methods) {
this.globalMethods = methods;
}
public final HproseMode getMode() {
return mode;
}
public final void setMode(HproseMode mode) {
this.mode = mode;
}
public final boolean isDebugEnabled() {
return debugEnabled;
}
public final void setDebugEnabled(boolean enabled) {
debugEnabled = enabled;
}
public int getErrorDelay() {
return errorDelay;
}
public void setErrorDelay(int errorDelay) {
this.errorDelay = errorDelay;
}
public final HproseServiceEvent getEvent() {
return this.event;
}
public final void setEvent(HproseServiceEvent event) {
this.event = event;
}
public final HproseFilter getFilter() {
if (filters.isEmpty()) {
return null;
}
return filters.get(0);
}
public final void setFilter(HproseFilter filter) {
if (!filters.isEmpty()) {
filters.clear();
}
if (filter != null) {
filters.add(filter);
}
}
public final HproseService addFilter(HproseFilter filter) {
if (filter != null) {
filters.add(filter);
}
return this;
}
public final boolean removeFilter(HproseFilter filter) {
return filters.remove(filter);
}
public final HproseService add(Method method, Object obj, String aliasName) {
getGlobalMethods().addMethod(method, obj, aliasName);
return this;
}
public final HproseService add(Method method, Object obj, String aliasName, HproseResultMode mode) {
getGlobalMethods().addMethod(method, obj, aliasName, mode);
return this;
}
public final HproseService add(Method method, Object obj, String aliasName, boolean simple) {
getGlobalMethods().addMethod(method, obj, aliasName, simple);
return this;
}
public final HproseService add(Method method, Object obj, String aliasName, HproseResultMode mode, boolean simple) {
getGlobalMethods().addMethod(method, obj, aliasName, mode, simple);
return this;
}
public final HproseService add(Method method, Object obj, String aliasName, HproseResultMode mode, boolean simple, boolean oneway) {
getGlobalMethods().addMethod(method, obj, aliasName, mode, simple, oneway);
return this;
}
public final HproseService add(Method method, Object obj) {
getGlobalMethods().addMethod(method, obj);
return this;
}
public final HproseService add(Method method, Object obj, HproseResultMode mode) {
getGlobalMethods().addMethod(method, obj, mode);
return this;
}
public final HproseService add(Method method, Object obj, boolean simple) {
getGlobalMethods().addMethod(method, obj, simple);
return this;
}
public final HproseService add(Method method, Object obj, HproseResultMode mode, boolean simple) {
getGlobalMethods().addMethod(method, obj, mode, simple);
return this;
}
public final HproseService add(Method method, Object obj, HproseResultMode mode, boolean simple, boolean oneway) {
getGlobalMethods().addMethod(method, obj, mode, simple, oneway);
return this;
}
public final HproseService add(String methodName, Object obj, Class<?>[] paramTypes, String aliasName) throws NoSuchMethodException {
getGlobalMethods().addMethod(methodName, obj, paramTypes, aliasName);
return this;
}
public final HproseService add(String methodName, Object obj, Class<?>[] paramTypes, String aliasN
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
HPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是“高性能远程对象服务引擎”。 它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。 Hprose 支持众多流行的编程语言,例如: AAuto Quicker ActionScript ASP C++ Delphi/Free Pascal dotNET(C#, Visual Basic...) Golang Java JavaScript Node.js Objective-C Perl PHP Python Ruby 通过 Hprose,你就可以在这些语言之间方便高效的实现互通了。
资源推荐
资源详情
资源评论
收起资源包目录
Hprose 全名是高性能远程对象服务引擎.rar (524个子文件)
make.bat 6KB
gradlew.bat 2KB
make.bat 1KB
.gitignore 3KB
.gitignore 81B
.gitignore 7B
build.gradle 617B
build.gradle 436B
settings.gradle 15B
gradlew 5KB
index.html 417B
index.html 243B
app.iml 7KB
MyApplication.iml 944B
spring.jar 2.43MB
hprose_for_java_10.jar 484KB
hprose_for_java_9.jar 484KB
hprose_for_java_8.jar 484KB
hprose_for_java_7.jar 449KB
hprose_for_java_6.jar 449KB
hprose_for_java_5.jar 436KB
hprose_client_for_java_10.jar 414KB
hprose_client_for_java_9.jar 414KB
hprose_client_for_java_8.jar 414KB
hprose_client_for_java_7.jar 380KB
hprose_client_for_java_7.jar 380KB
hprose_client_for_java_6.jar 380KB
hprose_client_for_java_5.jar 369KB
javax.servlet-api-3.1.0.jar 94KB
gradle-wrapper.jar 49KB
javax.websocket-api-1.1.jar 36KB
spring_hprose_for_java_6.jar 5KB
spring_hprose_for_java_7.jar 5KB
spring_hprose_for_java_8.jar 5KB
spring_hprose_for_java_5.jar 5KB
HproseService.java 55KB
HproseMethods.java 42KB
Promise.java 40KB
HproseClient.java 37KB
ReferenceReader.java 32KB
HproseTcpClient.java 19KB
Reader.java 19KB
Writer.java 16KB
ValueWriter.java 15KB
ValueReader.java 14KB
HproseFormatter.java 14KB
HproseServlet.java 12KB
HproseHttpService.java 11KB
HproseHttpClient.java 11KB
UnserializerFactory.java 10KB
HproseTcpServer.java 10KB
SerializerFactory.java 10KB
Accessors.java 10KB
ByteBufferStream.java 9KB
RawReader.java 8KB
Connection.java 8KB
HproseInvocationHandler.java 8KB
DateTime.java 8KB
CookieManager.java 7KB
HandlerManager.java 7KB
HproseMethod.java 7KB
ConstructorAccessor.java 6KB
ClientExam10.java 5KB
Base64.java 5KB
OtherTypeSerializer.java 5KB
HproseProxyFactoryBean.java 5KB
Connector.java 5KB
HproseWebSocketService.java 5KB
MainActivity.java 5KB
ClassUtil.java 4KB
ConverterFactory.java 4KB
TCPHelloClient.java 4KB
HproseHttpServiceExporter.java 4KB
Threads.java 4KB
Reactor.java 4KB
Acceptor.java 4KB
InvokeSettings.java 4KB
DefaultUnserializer.java 4KB
StringBufferUnserializer.java 4KB
StringBuilderUnserializer.java 4KB
HproseContext.java 4KB
HproseTcpServiceExporter.java 3KB
StringUnserializer.java 3KB
PromiseFuture.java 3KB
ImmutablePairUnserializer.java 3KB
TCPSessionServer.java 3KB
PropertyAccessor.java 3KB
Timer.java 3KB
FieldAccessor.java 3KB
BigIntegerUnserializer.java 3KB
SafeFieldAccessor.java 3KB
LocalDateUnserializer.java 3KB
LocalTimeUnserializer.java 3KB
LinkedCaseInsensitiveMap.java 3KB
BooleanObjectUnserializer.java 3KB
DoubleObjectUnserializer.java 3KB
InstantUnserializer.java 3KB
FloatObjectUnserializer.java 3KB
UnserializerLoader.java 3KB
LongObjectUnserializer.java 3KB
共 524 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
野生的狒狒
- 粉丝: 1496
- 资源: 1530
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功