Skip to content

Commit f398a96

Browse files
author
Thomas Weise
committed
Added First JSON RPC Example
The calculator web service example has been ported to JSON RPC.
1 parent 67ce244 commit f398a96

24 files changed

Lines changed: 850 additions & 0 deletions

.gitignore

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,20 @@ hs_err_pid*
154154
/webServices/calculator/client/src/main/java/calculatorClient/CalculatorCallbackHandler.java
155155
/webServices/calculator/client/src/main/java/calculatorClient/CalculatorStub.java
156156

157+
## JSON RPC
158+
### calculator server example
159+
/jsonRPC/calculator/server/target/
160+
/jsonRPC/calculator/server/temp/
161+
/jsonRPC/calculator/server/tmp/
162+
/jsonRPC/calculator/server/bin/
163+
/jsonRPC/calculator/server/.classpath
164+
### calculator client example
165+
/jsonRPC/calculator/client/target/
166+
/jsonRPC/calculator/client/temp/
167+
/jsonRPC/calculator/client/tmp/
168+
/jsonRPC/calculator/client/bin/
169+
/jsonRPC/calculator/client/.classpath
170+
157171

158172
## MPI
159173
## Linux Builds of C examples
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Java
2+
*.class
3+
4+
# Mobile Tools for Java (J2ME)
5+
.mtj.tmp/
6+
7+
# Package Files #
8+
*.jar
9+
*.war
10+
*.ear
11+
12+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
13+
hs_err_pid*
14+
/target/
15+
16+
# other files, potentially created by build tools
17+
/.classpath
18+
/bin
19+
/classes
20+
/build
21+
/temp
22+
/tmp
23+
/out
24+
/.gradle
25+
/dependency-reduced-pom.xml

jsonRPC/calculator/client/.project

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>calculatorJSONClient</name>
4+
<comment>The client side of the Calculator Server example.</comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
<buildCommand>
14+
<name>org.eclipse.m2e.core.maven2Builder</name>
15+
<arguments>
16+
</arguments>
17+
</buildCommand>
18+
</buildSpec>
19+
<natures>
20+
<nature>org.eclipse.jdt.core.javanature</nature>
21+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
22+
</natures>
23+
</projectDescription>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
eclipse.preferences.version=1
2+
encoding//src/main/java=UTF-8
3+
encoding//src/main/resources=UTF-8
4+
encoding//src/test/java=UTF-8
5+
encoding//src/test/resources=UTF-8
6+
encoding/<project>=UTF-8
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
3+
org.eclipse.jdt.core.compiler.compliance=1.7
4+
org.eclipse.jdt.core.compiler.doc.comment.support=disabled
5+
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
6+
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
7+
org.eclipse.jdt.core.compiler.problem.comparingIdentical=ignore
8+
org.eclipse.jdt.core.compiler.problem.deadCode=ignore
9+
org.eclipse.jdt.core.compiler.problem.deprecation=ignore
10+
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
11+
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
12+
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
13+
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
14+
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
15+
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
16+
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
17+
org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
18+
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=ignore
19+
org.eclipse.jdt.core.compiler.problem.forbiddenReference=ignore
20+
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=ignore
21+
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
22+
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=ignore
23+
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
24+
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
25+
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
26+
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
27+
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
28+
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
29+
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
30+
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
31+
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=ignore
32+
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
33+
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
34+
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
35+
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
36+
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private
37+
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
38+
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
39+
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
40+
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
41+
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
42+
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
43+
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
44+
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
45+
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
46+
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=ignore
47+
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=ignore
48+
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
49+
org.eclipse.jdt.core.compiler.problem.nullReference=ignore
50+
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=ignore
51+
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
52+
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
53+
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
54+
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
55+
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
56+
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
57+
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
58+
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
59+
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
60+
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
61+
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore
62+
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
63+
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
64+
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
65+
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
66+
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
67+
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
68+
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
69+
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
70+
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
71+
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
72+
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
73+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
74+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
75+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
76+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
77+
org.eclipse.jdt.core.compiler.problem.unusedImport=ignore
78+
org.eclipse.jdt.core.compiler.problem.unusedLabel=ignore
79+
org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
80+
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
81+
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
82+
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
83+
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
84+
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
85+
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
86+
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=ignore
87+
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore
88+
org.eclipse.jdt.core.compiler.source=1.7
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/bin/bash
2+
3+
# strict error handling
4+
set -o pipefail # trace ERR through pipes
5+
set -o errtrace # trace ERR through 'time command' and other functions
6+
set -o nounset # set -u : exit the script if you try to use an uninitialised variable
7+
set -o errexit # set -e : exit the script if any statement returns a non-true return value
8+
9+
echo "We now build the calculator JSON RPC client."
10+
11+
rm -rf target
12+
mvn clean compile package
13+
rm -rf target/generated-sources
14+
rm -rf target/maven-archiver
15+
rm -rf target/maven-status
16+
rm -rf target/calculatorJSONClient.jar
17+
18+
echo "Successfully finished building the calculator JSON RPC client."

jsonRPC/calculator/client/pom.xml

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>thomasWeise</groupId>
6+
<artifactId>calculatorJSONClient</artifactId>
7+
<version>0.8.0</version>
8+
<packaging>jar</packaging>
9+
<name>Calculator Service Client</name>
10+
<description>The client part of the calculator web service example.</description>
11+
12+
<url>http://www.it-weise.de/</url>
13+
<organization>
14+
<url>http://www.it-weise.de/</url>
15+
<name>thomasWeise</name>
16+
</organization>
17+
18+
<developers>
19+
<developer>
20+
<id>thomasWeise</id>
21+
<name>Thomas Weise</name>
22+
<email>tweise@ustc.edu.cn</email>
23+
<url>http://www.it-weise.de/</url>
24+
<organization>University of Science and Technology of China (USTC)</organization>
25+
<organizationUrl>http://www.ustc.edu.cn/</organizationUrl>
26+
<roles>
27+
<role>architect</role>
28+
<role>developer</role>
29+
</roles>
30+
<timezone>China Time Zone</timezone>
31+
</developer>
32+
</developers>
33+
34+
<properties>
35+
<encoding>UTF-8</encoding>
36+
<project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
37+
<project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
38+
<jdk.version>1.7</jdk.version>
39+
<axis2.version>1.6.3</axis2.version>
40+
<project.mainClass>calculatorClient.TestClient</project.mainClass>
41+
</properties>
42+
43+
<licenses>
44+
<license>
45+
<name>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</name>
46+
<url>http://www.gnu.org/licenses/gpl-3.0-standalone.html</url>
47+
<distribution>repo</distribution>
48+
</license>
49+
</licenses>
50+
51+
<issueManagement>
52+
<url>https://github.com/thomasWeise/distributedComputingExamples/issues</url>
53+
<system>GitHub</system>
54+
</issueManagement>
55+
56+
<scm>
57+
<connection>scm:git:git@github.com:thomasWeise/distributedComputingExamples.git</connection>
58+
<developerConnection>scm:git:git@github.com:thomasWeise/distributedComputingExamples.git</developerConnection>
59+
<url>git@github.com:thomasWeise/distributedComputingExamples.git</url>
60+
</scm>
61+
62+
<inceptionYear>2016</inceptionYear>
63+
64+
<dependencies>
65+
<dependency>
66+
<groupId>com.github.briandilley.jsonrpc4j</groupId>
67+
<artifactId>jsonrpc4j</artifactId>
68+
<version>1.4.4</version>
69+
</dependency>
70+
</dependencies>
71+
72+
<build>
73+
<finalName>calculatorJSONClient</finalName>
74+
75+
<plugins>
76+
<plugin>
77+
<groupId>org.apache.maven.plugins</groupId>
78+
<artifactId>maven-compiler-plugin</artifactId>
79+
<version>3.1</version>
80+
<configuration>
81+
<source>${jdk.version}</source>
82+
<target>${jdk.version}</target>
83+
<encoding>${encoding}</encoding>
84+
<showWarnings>true</showWarnings>
85+
<showDeprecation>true</showDeprecation>
86+
</configuration>
87+
</plugin>
88+
89+
<!-- This one is for building the fat jar. -->
90+
<plugin>
91+
<groupId>org.apache.maven.plugins</groupId>
92+
<artifactId>maven-shade-plugin</artifactId>
93+
<version>2.3</version>
94+
<executions>
95+
<execution>
96+
<phase>package</phase>
97+
<goals>
98+
<goal>shade</goal>
99+
</goals>
100+
<configuration>
101+
102+
<minimizeJar>false</minimizeJar>
103+
<shadedArtifactAttached>true</shadedArtifactAttached>
104+
<createDependencyReducedPom>false</createDependencyReducedPom>
105+
<finalName>calculatorJSONClient-full</finalName>
106+
107+
<filters>
108+
<filter>
109+
<artifact>*:*</artifact>
110+
<excludes>
111+
<exclude>META-INF/*.SF</exclude>
112+
<exclude>META-INF/*.DSA</exclude>
113+
<exclude>META-INF/*.RSA</exclude>
114+
</excludes>
115+
</filter>
116+
</filters>
117+
118+
<transformers>
119+
<transformer
120+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
121+
<mainClass>${project.mainClass}</mainClass>
122+
</transformer>
123+
<transformer
124+
implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
125+
<transformer
126+
implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer" />
127+
<transformer
128+
implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
129+
<transformer
130+
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
131+
</transformers>
132+
</configuration>
133+
</execution>
134+
</executions>
135+
</plugin>
136+
137+
</plugins>
138+
</build>
139+
140+
</project>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package calculatorClient;
2+
3+
public interface CalculatorInterface {
4+
5+
public abstract Complex add(final Complex x, final Complex y);
6+
7+
public abstract Complex sub(final Complex x, final Complex y);
8+
9+
public abstract Complex multiply(final Complex x, final Complex y);
10+
11+
public abstract Complex divide(final Complex x, final Complex y);
12+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package calculatorClient;
2+
3+
import java.io.Serializable;
4+
5+
public class Complex implements Serializable {
6+
private static final long serialVersionUID = 1L;
7+
8+
private double m_a;
9+
private double m_b;
10+
11+
public Complex() {
12+
super();
13+
}
14+
15+
public Complex(final double a, final double b) {
16+
this();
17+
this.setRealPart(a);
18+
this.setImaginaryPart(b);
19+
}
20+
21+
public double getRealPart() {
22+
return this.m_a;
23+
}
24+
25+
public void setRealPart(final double a) {
26+
this.m_a = a;
27+
}
28+
29+
public double getImaginaryPart() {
30+
return this.m_b;
31+
}
32+
33+
public void setImaginaryPart(final double b) {
34+
this.m_b = b;
35+
}
36+
}

0 commit comments

Comments
 (0)