diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-client/src/main/java/com/xxl/rpc/sample/client/config/JFinalCoreConfig.java b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-client/src/main/java/com/xxl/rpc/sample/client/config/JFinalCoreConfig.java
index 86cb2eb76..69810922c 100644
--- a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-client/src/main/java/com/xxl/rpc/sample/client/config/JFinalCoreConfig.java
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-client/src/main/java/com/xxl/rpc/sample/client/config/JFinalCoreConfig.java
@@ -99,6 +99,7 @@ private void destoryXxlRpcClient() throws Exception {
// ---------------------- jfinal ----------------------
+ @Override
public void configRoute(Routes route) {
route.add("/", IndexController.class);
}
diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/pom.xml b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/pom.xml
index 34b5c82cc..5f9300b0c 100644
--- a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/pom.xml
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/pom.xml
@@ -9,6 +9,38 @@
1.3.1
xxl-rpc-executor-sample-jfinal-server
+ war
+
+
+
+
+ com.jfinal
+ jfinal
+ 2.2
+
+
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${slf4j-api.version}
+
+
+
+
+ com.xuxueli
+ xxl-rpc-core
+ ${project.parent.version}
+
+
+
+
+ com.xuxueli
+ xxl-rpc-executor-sample-jfinal-api
+ ${project.parent.version}
+
+
+
\ No newline at end of file
diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/java/com/xxl/rpc/sample/server/config/JFinalCoreConfig.java b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/java/com/xxl/rpc/sample/server/config/JFinalCoreConfig.java
new file mode 100644
index 000000000..dd8ca42d1
--- /dev/null
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/java/com/xxl/rpc/sample/server/config/JFinalCoreConfig.java
@@ -0,0 +1,91 @@
+package com.xxl.rpc.sample.server.config;
+
+import com.jfinal.config.*;
+import com.jfinal.kit.Prop;
+import com.jfinal.kit.PropKit;
+import com.xxl.rpc.registry.impl.XxlRegistryServiceRegistry;
+import com.xxl.rpc.remoting.net.NetEnum;
+import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
+import com.xxl.rpc.sample.api.DemoService;
+import com.xxl.rpc.sample.server.service.DemoServiceImpl;
+import com.xxl.rpc.serialize.Serializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+
+/**
+ * @author xuxueli 2018-12-21
+ */
+public class JFinalCoreConfig extends JFinalConfig {
+ private Logger logger = LoggerFactory.getLogger(JFinalCoreConfig.class);
+
+
+
+ // ---------------------- xxl-rpc server ----------------------
+
+ private XxlRpcProviderFactory xxlRpcProviderFactory;
+ private void initXxlRpcServer() throws Exception {
+
+ // init invoker factory
+ final Prop xxlJobProp = PropKit.use("xxl-rpc-sample.properties");
+ xxlRpcProviderFactory = new XxlRpcProviderFactory();
+ xxlRpcProviderFactory.initConfig(NetEnum.NETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), null, 7080, null, XxlRegistryServiceRegistry.class, new HashMap(){{
+ put(XxlRegistryServiceRegistry.XXL_REGISTRY_ADDRESS, xxlJobProp.get("xxl-rpc.registry.xxlregistry.address"));
+ put(XxlRegistryServiceRegistry.ENV, xxlJobProp.get("xxl-rpc.registry.xxlregistry.env"));
+ }});
+
+ // add services
+ xxlRpcProviderFactory.addService(DemoService.class.getName(), null, new DemoServiceImpl());
+
+ // start
+ xxlRpcProviderFactory.start();
+ }
+ private void destoryXxlRpcServer() throws Exception {
+ xxlRpcProviderFactory.stop();
+ }
+
+
+ // ---------------------- jfinal ----------------------
+
+ @Override
+ public void afterJFinalStart() {
+ try {
+ initXxlRpcServer();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void beforeJFinalStop() {
+ try {
+ destoryXxlRpcServer();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void configRoute(Routes routes) {
+
+ }
+
+ public void configConstant(Constants constants) {
+
+ }
+
+ public void configPlugin(Plugins plugins) {
+
+ }
+
+ public void configInterceptor(Interceptors interceptors) {
+
+ }
+
+ public void configHandler(Handlers handlers) {
+
+ }
+
+
+}
diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/java/com/xxl/rpc/sample/server/service/DemoServiceImpl.java b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/java/com/xxl/rpc/sample/server/service/DemoServiceImpl.java
new file mode 100644
index 000000000..102aaa643
--- /dev/null
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/java/com/xxl/rpc/sample/server/service/DemoServiceImpl.java
@@ -0,0 +1,30 @@
+package com.xxl.rpc.sample.server.service;
+
+import com.xxl.rpc.sample.api.DemoService;
+import com.xxl.rpc.sample.api.dto.UserDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.MessageFormat;
+
+/**
+ * @author xuxueli
+ */
+public class DemoServiceImpl implements DemoService {
+ private static Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
+
+ @Override
+ public UserDTO sayHi(String name) {
+
+ String word = MessageFormat.format("Hi {0}, from {1} as {2}",
+ name, DemoServiceImpl.class.getName(), String.valueOf(System.currentTimeMillis()));
+
+ if ("error".equalsIgnoreCase(name)) throw new RuntimeException("test exception.");
+
+ UserDTO userDTO = new UserDTO(name, word);
+ logger.info(userDTO.toString());
+
+ return userDTO;
+ }
+
+}
diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/resources/log4j.xml b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/resources/log4j.xml
new file mode 100644
index 000000000..5f2e3787a
--- /dev/null
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/resources/log4j.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/resources/xxl-rpc-sample.properties b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/resources/xxl-rpc-sample.properties
new file mode 100644
index 000000000..8841a94e0
--- /dev/null
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/resources/xxl-rpc-sample.properties
@@ -0,0 +1,3 @@
+# xxl-rpc
+xxl-rpc.registry.xxlregistry.address=http://localhost:8080/xxl-registry-admin
+xxl-rpc.registry.xxlregistry.env=default
\ No newline at end of file
diff --git a/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/webapp/WEB-INF/web.xml b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 000000000..c6a8b984d
--- /dev/null
+++ b/xxl-rpc-samples/xxl-rpc-executor-sample-jfinal/xxl-rpc-executor-sample-jfinal-server/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,28 @@
+
+
+
+ xxl-rpc-executor-sample-jfinal-client
+
+ webAppRootKey
+ xxl-rpc-executor-sample-jfinal-client
+
+
+
+
+ jfinal
+ com.jfinal.core.JFinalFilter
+
+ configClass
+ com.xxl.rpc.sample.server.config.JFinalCoreConfig
+
+
+
+ jfinal
+ /*
+
+
+
+
\ No newline at end of file