Znalazłem w sobie determinację, by w zakresie większym niż hello przemigrować na Ideę Community z realnymi projektami webowymi.
Projekt jest nie-springowy na Apache Wicket. Framework jako rdzeń ma bardzo małe dependencje od Javy EE, zaledwie Servlet i Filter mu wystarcza.
Wygenerowany z archetypu, od pierwszej chwili działa, można rozbudowywać. Idea Community zgodnie ze spodziewaniem nie robi żadnych świństw.
Tak wygląda starter, który się wygenerował.
public class Start
{
/**
* Main function, starts the jetty server.
*
* @param args
*/
public static void main(String[] args)
{
System.setProperty("wicket.configuration", "development");
Server server = new Server();
HttpConfiguration http_config = new HttpConfiguration();
http_config.setSecureScheme("https");
http_config.setSecurePort(8443);
http_config.setOutputBufferSize(32768);
ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(http_config));
http.setPort(8080);
http.setIdleTimeout(1000 * 60 * 60);
server.addConnector(http);
Resource keystore = Resource.newClassPathResource("/keystore");
if (keystore != null && keystore.exists())
{
// if a keystore for a SSL certificate is available, start a SSL
// connector on port 8443.
// By default, the quickstart comes with a Apache Wicket Quickstart
// Certificate that expires about half way september 2021. Do not
// use this certificate anywhere important as the passwords are
// available in the source.
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStoreResource(keystore);
sslContextFactory.setKeyStorePassword("wicket");
sslContextFactory.setKeyManagerPassword("wicket");
HttpConfiguration https_config = new HttpConfiguration(http_config);
https_config.addCustomizer(new SecureRequestCustomizer());
ServerConnector https = new ServerConnector(server, new SslConnectionFactory(
sslContextFactory, "http/1.1"), new HttpConnectionFactory(https_config));
https.setPort(8443);
https.setIdleTimeout(500000);
server.addConnector(https);
System.out.println("SSL access to the examples has been enabled on port 8443");
System.out
.println("You can access the application using SSL on https://localhost:8443");
System.out.println();
}
WebAppContext bb = new WebAppContext();
bb.setServer(server);
bb.setContextPath("/");
bb.setWar("src/main/webapp");
// uncomment the next two lines if you want to start Jetty with WebSocket (JSR-356) support
// you need org.apache.wicket:wicket-native-websocket-javax in the classpath!
// ServerContainer serverContainer = WebSocketServerContainerInitializer.configureContext(bb);
// serverContainer.addEndpoint(new WicketServerEndpointConfig());
// uncomment next line if you want to test with JSESSIONID encoded in the urls
// ((AbstractSessionManager)
// bb.getSessionHandler().getSessionManager()).setUsingCookies(false);
server.setHandler(bb);
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer);
server.addEventListener(mBeanContainer);
server.addBean(mBeanContainer);
try
{
server.start();
server.join();
}
catch (Exception e)
{
e.printStackTrace();
System.exit(100);
}
}
}
katalog jetty zawiera
Directory of D:\java2020\idea\myproject\src\test\jetty
20-11-2020 00:38 <DIR> .
20-11-2020 00:38 <DIR> ..
20-11-2020 00:38 2018 jetty-http.xml
20-11-2020 00:38 2380 jetty-https.xml
20-11-2020 00:38 2138 jetty-ssl.xml
20-11-2020 00:38 1068 jetty.xml
4 File(s) 7604 bytes
- Emebedded jetty będzie OK na produkcji góra 40 user, w tym 5-10 aktywnych? To właściwie nie jest pytanie, ale oczekiwanie potwierdzenia. Jetty już używałem i było z tym dobrze.
- Z wielu względów, w tym repozytoria JDBI3 i deltaspike (plus inne) potrzebuję CDI 2, i to będzie w zasadzie ostatnia dependecja EE
jest to jakoś udokumentowane, ale czuję się jakbym oglądał trzeci odcinek serialu
https://www.eclipse.org/jetty/documentation/current/frameworks.html#framework-cdi
https://www.eclipse.org/jetty/documentation/9.4.34.v20201102/framework-weld.html
Niby rozumiem literki, ale nie składam w całość.
W czym mam wpisać wskazane propertisy np z nazwami modułów jetty? Biedna dokumentacja mówi o jeszcze innych xmlach od jetty, np jetty-web.xml
Jak zadbam o prawidłowe moduły jetty, dependencje się ściągną? Czy mam normalnie w pom.xml dać stosowne pliki (jakie???) a w konfigach embedded Jetty tylko przywołać?
- Wszelkie próby buildowania nie tworzą w katalogach target ani WAR-a, ani JAR-a. Jak się to robi w Idea?
4. Jak się w Idea robi nowy "projekt", podobno to się nazywa "module", typu biblioteka, Plain Old Java JAR, od którego by zależała aplikacja? Oczekuję, że jednocześnie ma się da developować bibliotekę(ki) i aplikację, i to żeby się budowało i startowało na przycisk Debug (w Netbeansie trzeba jawnie budować)