Skip to content

Commit 6a93769

Browse files
nicolnicol
authored andcommitted
abstracting War server
1 parent 2797d94 commit 6a93769

File tree

5 files changed

+152
-177
lines changed

5 files changed

+152
-177
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@
460460
<dependency>
461461
<groupId>org.zoomba-lang</groupId>
462462
<artifactId>spark-core</artifactId>
463-
<version>3.0.2</version>
463+
<version>3.0.3</version>
464464
</dependency>
465465
<dependency>
466466
<groupId>com.google.guava</groupId>

src/main/java/org/magic/api/interfaces/abstracts/AbstractMTGServer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@ protected Object getCached(String k, Callable<Object> call)
3838
return cache.getItem(k);
3939
}
4040

41-
41+
42+
public void preinit()
43+
{
44+
//do nothing;
45+
}
46+
4247

4348
public void clearCache() {
4449
if(cache!=null)
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package org.magic.api.interfaces.abstracts.extra;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.util.Map;
6+
7+
import org.eclipse.jetty.ee10.webapp.WebAppContext;
8+
import org.eclipse.jetty.server.Handler;
9+
import org.eclipse.jetty.server.Server;
10+
import org.magic.api.beans.technical.MTGProperty;
11+
import org.magic.api.interfaces.abstracts.AbstractMTGServer;
12+
import org.magic.services.MTGConstants;
13+
import org.magic.services.network.URLTools;
14+
15+
public abstract class AbstractWarServer extends AbstractMTGServer{
16+
17+
private Server server;
18+
19+
protected abstract String warUri() ;
20+
protected abstract String getWarFileName();
21+
22+
private File downloadVersion() throws IOException
23+
{
24+
var f = new File(MTGConstants.DATA_DIR,getWarFileName());
25+
26+
if(!f.exists())
27+
URLTools.download(warUri(), f);
28+
29+
return f;
30+
}
31+
32+
33+
public void init()
34+
{
35+
preinit();
36+
server = new Server(getInt("PORT"));
37+
var handlers = new Handler.Sequence();
38+
handlers.setServer(server);
39+
server.setHandler(handlers);
40+
try {
41+
handlers.addHandler(createWebapp(server, "http","/"));
42+
} catch (IOException e) {
43+
logger.error("error on Init", e);
44+
}
45+
}
46+
47+
48+
private WebAppContext createWebapp(Server server, String scheme,String context) throws IOException {
49+
var webapp = new WebAppContext();
50+
webapp.setServer(server);
51+
webapp.setContextPath(context);
52+
webapp.setParentLoaderPriority(true);
53+
webapp.setLogUrlOnStart(true);
54+
webapp.setInitParameter("scheme", scheme);
55+
webapp.setTempDirectory(new File(MTGConstants.DATA_DIR,"artemis"));
56+
57+
webapp.setWar(downloadVersion().toURI().toString());
58+
59+
60+
logger.info("Init {} on {}://localhost:{}{}. deploying war {}",getName(), scheme,getInt("PORT"),context,webapp.getWar());
61+
return webapp;
62+
}
63+
64+
65+
@Override
66+
public Map<String, MTGProperty> getDefaultAttributes() {
67+
return Map.of("AUTOSTART", MTGProperty.newBooleanProperty(FALSE, "Run server at startup"),
68+
"PORT", MTGProperty.newIntegerProperty("8083", "listening port for webserver", 80, -1)
69+
);
70+
}
71+
72+
@Override
73+
public void start() throws IOException {
74+
try {
75+
init();
76+
server.start();
77+
} catch (Exception e) {
78+
throw new IOException(e);
79+
}
80+
81+
}
82+
83+
@Override
84+
public void stop() throws IOException {
85+
try {
86+
server.stop();
87+
} catch (Exception _) {
88+
throw new IOException();
89+
}
90+
91+
}
92+
93+
@Override
94+
public boolean isAlive() {
95+
if(server!=null)
96+
return server.isRunning();
97+
98+
return false;
99+
}
100+
101+
102+
@Override
103+
public boolean isAutostart() {
104+
return getBoolean("AUTOSTART");
105+
}
106+
107+
}
Lines changed: 19 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,52 @@
11
package org.magic.servers.impl;
22

33
import java.awt.Image;
4-
import java.io.File;
5-
import java.io.IOException;
64
import java.util.Map;
75

86
import javax.swing.Icon;
97
import javax.swing.ImageIcon;
108

119
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
1210
import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
13-
import org.eclipse.jetty.ee10.webapp.WebAppContext;
14-
import org.eclipse.jetty.server.Handler;
15-
import org.eclipse.jetty.server.Server;
1611
import org.magic.api.beans.technical.MTGProperty;
1712
import org.magic.api.interfaces.abstracts.AbstractMTGPlugin;
18-
import org.magic.api.interfaces.abstracts.AbstractMTGServer;
13+
import org.magic.api.interfaces.abstracts.extra.AbstractWarServer;
1914
import org.magic.services.MTGConstants;
20-
import org.magic.services.network.URLTools;
2115

22-
public class ActiveMQConsoleServer extends AbstractMTGServer{
16+
public class ActiveMQConsoleServer extends AbstractWarServer{
2317

24-
private Server server;
25-
26-
private File downloadVersion() throws IOException
27-
{
28-
var url = "https://repo1.maven.org/maven2/org/apache/activemq/artemis-console/"+getVersion()+"/artemis-console-2.42.0.war";
29-
var f = new File(MTGConstants.DATA_DIR,"artemis-console-"+getVersion()+".war");
30-
31-
if(!f.exists())
32-
URLTools.download(url, f);
33-
34-
return f;
18+
19+
@Override
20+
protected String getWarFileName() {
21+
return "artemis-console-"+getVersion()+".war";
3522
}
3623

37-
38-
public void init()
39-
{
24+
@Override
25+
protected String warUri() {
26+
return "https://repo1.maven.org/maven2/org/apache/activemq/artemis-console/"+getVersion()+"/artemis-console-"+getVersion()+".war";
27+
}
28+
29+
@Override
30+
public void preinit() {
4031
System.setProperty("hawtio.authenticationEnabled", getString("AUTHENTICATION"));
4132

42-
43-
server = new Server(getInt("PORT"));
44-
var handlers = new Handler.Sequence();
45-
handlers.setServer(server);
46-
server.setHandler(handlers);
47-
try {
48-
handlers.addHandler(createWebapp(server, "http","/"));
49-
} catch (IOException e) {
50-
logger.error("error on hawtio Init", e);
51-
}
5233
}
5334

5435

55-
private WebAppContext createWebapp(Server server, String scheme,String context) throws IOException {
56-
var webapp = new WebAppContext();
57-
webapp.setServer(server);
58-
webapp.setContextPath(context);
59-
webapp.setParentLoaderPriority(true);
60-
webapp.setLogUrlOnStart(true);
61-
webapp.setInitParameter("scheme", scheme);
62-
webapp.setTempDirectory(new File(MTGConstants.DATA_DIR,"artemis"));
63-
64-
webapp.setWar(downloadVersion().toURI().toString());
65-
66-
67-
logger.info("Init ArtemisConsole on {}://localhost:{}{}. deploying war {}", scheme,getInt("PORT"),context,webapp.getWar());
68-
return webapp;
69-
}
70-
71-
7236
@Override
7337
public Map<String, MTGProperty> getDefaultAttributes() {
74-
return Map.of("AUTOSTART", MTGProperty.newBooleanProperty(FALSE, "Run server at startup"),
75-
"PORT", MTGProperty.newIntegerProperty("8083", "listening port for webserver", 80, -1),
76-
"AUTHENTICATION",MTGProperty.newBooleanProperty("false","enable or not hawt authentication"));
38+
var m = super.getDefaultAttributes();
39+
m.put("AUTHENTICATION",MTGProperty.newBooleanProperty("false","enable or not hawt authentication"));
40+
41+
return m;
7742
}
7843

44+
7945
@Override
8046
public String getVersion() {
8147
return new ActiveMQServerImpl(new ConfigurationImpl()).getVersion().getFullVersion();
8248
}
8349

84-
@Override
85-
public void start() throws IOException {
86-
try {
87-
init();
88-
server.start();
89-
} catch (Exception e) {
90-
throw new IOException(e);
91-
}
92-
93-
}
94-
95-
@Override
96-
public void stop() throws IOException {
97-
try {
98-
server.stop();
99-
} catch (Exception _) {
100-
throw new IOException();
101-
}
102-
103-
}
104-
105-
@Override
106-
public boolean isAlive() {
107-
if(server!=null)
108-
return server.isRunning();
109-
110-
return false;
111-
}
112-
113-
@Override
114-
public boolean isAutostart() {
115-
return getBoolean("AUTOSTART");
116-
}
117-
11850
@Override
11951
public String description() {
12052
return "A modular web console for managing your Artemis Server";
@@ -135,6 +67,6 @@ public Icon getIcon() {
13567
return MTGConstants.ICON_DEFAULT_PLUGIN;
13668
}
13769
}
138-
70+
13971

14072
}

0 commit comments

Comments
 (0)