Change Super Dev Mode port parameter in intellij's GWT Configuration - java

I have two GWT projects I want to run simultaneously for development. I like running them with Intellij's GWT Configuration, because it takes care of super dev mode for me.
The issue is that intellij's GWT Configuration has some default values for Dev Mode parameters, like the port number, and I can't figure out how to change them.
If I pass the dev mode parameter -port 9264, the logs tell me:
Runing CodeServer with parameters: [-noprecompile, -port, 9876, -sourceLevel, 1.7, -bindAddress, 127.0.0.1, -launcherDir, /home/coraythan/.IntelliJIdea14/system/gwt/code.63303291/Books.1f092f4b/run/www, -logLevel, INFO, com.mywebsite.books.Books]
So that doesn't do anything.
No space like this -port9264 and I get the error:
Unknown argument: -port9264
Google Web Toolkit 2.7.0
DevMode [-[no]startServer] [-port port-number | "auto"] [-whitelist whitelist-string] [-blacklist blacklist-string] [-logdir directory] [-logLevel level] [-gen dir] [-bindAddress host-name-or-address] [-codeServerPort port-number | "auto"] [-[no]superDevMode] [-server servletContainerLauncher[:args]] [-startupUrl url] [-war dir] [-deploy dir] [-extra dir] [-modulePathPrefix ] [-workDir dir] [-XmethodNameDisplayMode NONE | ONLY_METHOD_NAME | ABBREVIATED | FULL] [-sourceLevel [auto, 1.6, 1.7]] [-XjsInteropMode [NONE, JS, CLOSURE]] [-[no]incremental] module[s]
If I add the square brackets like it looks like it should have [-port 9264], it doesn't replace the pre-existing port parameter, and tries to load a module
Runing CodeServer with parameters: [-noprecompile, -port, 9876, -sourceLevel, 1.7, -bindAddress, 127.0.0.1, -launcherDir, /home/coraythan/.IntelliJIdea14/system/gwt/code.63303291/Books.1f092f4b/run/www, -logLevel, INFO, [-port, 9264], com.mywebsite.books.Books]
Super Dev Mode starting up
workDir: /tmp/gwt-codeserver-7935707369622390541.tmp
Loading inherited module '[-port'
[ERROR] Unable to find '[-port.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
Loading modules
[-port
Loading inherited module '[-port'
[ERROR] Unable to find '[-port.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
[ERROR] shell failed in doStartup method
Does anyone know how you can add / replace dev mode parameters in Intellij's GWT Configurations?

The -port parameter change the port of the web server where as the parameter
-codeServerPort change the port of the code server.
Using this configuration:
starts the web server with port 9264 and the code server with port 8765:

Thanks #el-hoss, this lead me to confirm the Dev Mode parameters can be specified for those given at http://www.gwtproject.org/articles/superdevmode.html:
According to the rules given at https://www.jetbrains.com/help/idea/run-debug-configuration-gwt.html:

Related

sbt server not available

I'm trying to get the play-samples-play-java-hello-world-tutorial working, but it does not work.
I have downloaded the java Hello world from https://www.playframework.com/getting-started
In the readme is decribed that I should run sbt.bat. It downloaded several maven dependencies and started a server, but I cannot access it.
Now running sbt.bat :
C:\play\play-samples-play-java-hello-world-tutorial>.\sbt-dist\bin\sbt.bat
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading settings for project play-samples-play-java-hello-world-tutorial-build from plugins.sbt ...
[info] Loading project definition from C:\play\play-samples-play-java-hello-world-tutorial\project
[info] Loading settings for project root from build.sbt ...
[info] Set current project to play-java-hello-world-web (in build file:/C:/play/play-samples-play-java-hello-world-tutorial/)
[info] sbt server started at local:sbt-server-134f36618ffbf47c6676
[play-java-hello-world-web] $
The readme tells me :
3. After the message Server started, ... displays, enter the following URL in a browser: http://localhost:9000
But it does not serve a webpage. I allready disabled the firewall and tried to run another webserver on port 9000, which works.
What could be wrong?
The sbt server is not the same as the play framework server. You only started the sbt console. You need to start the real server with the command run. Then it will available on port 9000.

What is a simple, effective way to debug custom Kafka connectors?

I'm working a couple of Kafka connectors and I don't see any errors in their creation/deployment in the console output, however I am not getting the result that I'm looking for (no results whatsoever for that matter, desired or otherwise). I made these connectors based on Kafka's example FileStream connectors, so my debug technique was based off the use of the SLF4J Logger that is used in the example. I've searched for the log messages that I thought would be produced in the console output, but to no avail. Am I looking in the wrong place for these messages? Or perhaps is there a better way of going about debugging these connectors?
Example uses of the SLF4J Logger that I referenced for my implementation:
Kafka FileStreamSinkTask
Kafka FileStreamSourceTask
I will try to reply to your question in a broad way. A simple way to do Connector development could be as follows:
Structure and build your connector source code by looking at one of the many Kafka Connectors available publicly (you'll find an extensive list available here: https://www.confluent.io/product/connectors/ )
Download the latest Confluent Open Source edition (>= 3.3.0) from https://www.confluent.io/download/
Make your connector package available to Kafka Connect in one of the following ways:
Store all your connector jar files (connector jar plus dependency jars excluding Connect API jars) to a location in your filesystem and enable plugin isolation by adding this location to the
plugin.path property in the Connect worker properties. For instance, if your connector jars are stored in /opt/connectors/my-first-connector, you will set plugin.path=/opt/connectors in your worker's properties (see below).
Store all your connector jar files in a folder under ${CONFLUENT_HOME}/share/java. For example: ${CONFLUENT_HOME}/share/java/kafka-connect-my-first-connector. (Needs to start with kafka-connect- prefix to be picked up by the startup scripts). $CONFLUENT_HOME is where you've installed Confluent Platform.
Optionally, increase your logging by changing the log level for Connect in ${CONFLUENT_HOME}/etc/kafka/connect-log4j.properties to DEBUG or even TRACE.
Use Confluent CLI to start all the services, including Kafka Connect. Details here: http://docs.confluent.io/current/connect/quickstart.html
Briefly: confluent start
Note: The Connect worker's properties file currently loaded by the CLI is ${CONFLUENT_HOME}/etc/schema-registry/connect-avro-distributed.properties. That's the file you should edit if you choose to enable classloading isolation but also if you need to change your Connect worker's properties.
Once you have Connect worker running, start your connector by running:
confluent load <connector_name> -d <connector_config.properties>
or
confluent load <connector_name> -d <connector_config.json>
The connector configuration can be either in java properties or JSON format.
Run
confluent log connect to open the Connect worker's log file, or navigate directly to where your logs and data are stored by running
cd "$( confluent current )"
Note: change where your logs and data are stored during a session of the Confluent CLI by setting the environment variable CONFLUENT_CURRENT appropriately. E.g. given that /opt/confluent exists and is where you want to store your data, run:
export CONFLUENT_CURRENT=/opt/confluent
confluent current
Finally, to interactively debug your connector a possible way is to apply the following before starting Connect with Confluent CLI :
confluent stop connect
export CONNECT_DEBUG=y; export DEBUG_SUSPEND_FLAG=y;
confluent start connect
and then connect with your debugger (for instance remotely to the Connect worker (default port: 5005). To stop running connect in debug mode, just run: unset CONNECT_DEBUG; unset DEBUG_SUSPEND_FLAG; when you are done.
I hope the above will make your connector development easier and ... more fun!
i love the accepted answer. one thing - the environment variables didn't work for me... i'm using confluent community edition 5.3.1...
here's what i did that worked...
i installed the confluent cli from here:
https://docs.confluent.io/current/cli/installing.html#tarball-installation
i ran confluent using the command confluent local start
i got the connect app details using the command ps -ef | grep connect
i copied the resulting command to an editor and added the arg (right after java):
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
then i stopped connect using the command confluent local stop connect
then i ran the connect command with the arg
brief intermission ---
vs code development is led by erich gamma - of gang of four fame, who also wrote eclipse. vs code is becoming a first class java ide see https://en.wikipedia.org/wiki/Erich_Gamma
intermission over ---
next i launched vs code and opened the debezium oracle connector folder (cloned from here) https://github.com/debezium/debezium-incubator
then i chose Debug - Open Configurations
and entered the highlighted debugging configuration
and then run the debugger - it will hit your breakpoints !!
the connect command should look something like this:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dkafka.logs.dir=/var/folders/yn/4k6t1qzn5kg3zwgbnf9qq_v40000gn/T/confluent.CYZjfRLm/connect/logs -Dlog4j.configuration=file:/Users/myuserid/confluent-5.3.1/bin/../etc/kafka/connect-log4j.properties -cp /Users/myuserid/confluent-5.3.1/share/java/kafka/*:/Users/myuserid/confluent-5.3.1/share/java/confluent-common/*:/Users/myuserid/confluent-5.3.1/share/java/kafka-serde-tools/*:/Users/myuserid/confluent-5.3.1/bin/../share/java/kafka/*:/Users/myuserid/confluent-5.3.1/bin/../support-metrics-client/build/dependant-libs-2.12.8/*:/Users/myuserid/confluent-5.3.1/bin/../support-metrics-client/build/libs/*:/usr/share/java/support-metrics-client/* org.apache.kafka.connect.cli.ConnectDistributed /var/folders/yn/4k6t1qzn5kg3zwgbnf9qq_v40000gn/T/confluent.CYZjfRLm/connect/connect.properties
Connector module is executed by the kafka connector framework. For debugging, we can use the standalone mode. we can configure IDE to use the ConnectStandalone main function as entry point.
create debug configure as the following. Need remember to tick "Include dependencies with "Provided" scope if it is maven project
connector properties file need specify the connector class name "connector.class" for debugging
worker properties file can copied from kafka folder /usr/local/etc/kafka/connect-standalone.properties

Managed VM deploy failed because "env" setting is not supported

Trying to deploy a Java app to Google Appengine Managed VM. I'm using console gcloud and already prepared WAR file. Plus app.yaml.
Using following command:
gcloud preview app deploy ./build/libs/app.yaml
Right now it fails with:
Building and pushing image for module [default]
-------------------------------------------------------------------------------- DOCKER BUILD OUTPUT --------------------------------------------------------------------------------
Step 0 : FROM gcr.io/google_appengine/jetty9
---> 005014071b64
Step 1 : ADD webapp-webapp.war $JETTY_BASE/webapps/root.war
---> 3e9023930cc8
Removing intermediate container 342e8a2f5750
Successfully built 3e9023930cc8
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Beginning teardown of remote build environment (this may take a few seconds).
Updating module [default]...failed.
ERROR: (gcloud.preview.app.deploy) Error Response: [400] "env" setting is not supported for this deployment.
I see similar error (there) for maven-gcloud-plugin that happens when project is not configured as WAR. But notice that:
i'm using plain command line tool gcloud, a latest version
and my project is packaged into WAR already
Also i'm using following app.yaml (which i've got from maven plugin sources):
runtime: java
env: 2
api_version: 1
handlers:
- url: .*
script: dynamic
So the question, where from this error is coming from (docker image is already prepared at this moment, right?). What it means? And how to fix this?
Update
I noticed that it uses FROM gcr.io/google_appengine/jetty9 for VM. But for Appengine it should be FROM gcr.io/google_appengine/jetty9-compat. I've tried to switch to exploded app instead of WAR, and it started using correct Docker base image. But still fails:
Building and pushing image for module [default]
-------------------------------------------------------------------------------- DOCKER BUILD OUTPUT --------------------------------------------------------------------------------
Step 0 : FROM gcr.io/google_appengine/jetty9-compat
---> 2ad8572ef3d8
Step 1 : ADD . /app/
---> b10f4bc6718e
Removing intermediate container 8b149f4baf9c
Successfully built b10f4bc6718e
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Beginning teardown of remote build environment (this may take a few seconds).
Updating module [default]...failed.
ERROR: (gcloud.preview.app.deploy) Error Response: [400] "env" setting is not supported for this deployment.
The reason was this line in app.yaml:
env: 2
it was too simple and too obvious to try to deploy w/o this option. Also, every doc, official and unofficial, mentions that you need to have env: 2 option set to deploy your app as Appengine app. That's really strange.
Removing this line also changed base Docker image to gcr.io/google_appengine/java-compat. I guess it means that jetty images, including jetty9-compat, aren't compatible with Appengine apps

"Development mode is loading..." and "Waiting for launch URLs" in GWT

I am a beginner in GWT and trying to run a sample HelloWorld program from http://www.vogella.com/tutorials/GWT/article.html. I installed the GWT plugin for Eclipse Kepler 4.3 and downloaded GWT SDK 2.3. While configuring SDK in eclipse, i was getting error that "gwt-codeserver.jar is missing" so i downloaded "gwt-codserver-2.5" jar and copied it to SDK folder and it fixed missing jar issue.
Then i run my application by right-click on the project and selected Run As -> "Web application". Now, i am not getting the url in the Development mode tab instead it shows "Development mode is loading...." and "Waiting for launch URLs" message continuously and nothing happens after that. In console i am getting below message.
Please help to fix this issue.
Unknown Argument: -superDevMode
DevMode [-[no]startServer] [-port port-number | "auto"] [-whitelist whitelist-string] [-blacklist blacklist-string] [-logdir directory] [-logLevel level] [-gen dir] [-bindAddress host-name-or-address] [-codeServerPort port-number | "auto"] [-server servletContainerLauncher[:args]] [-startupUrl url] [-war dir] [-deploy dir] [-extra dir] [-workDir dir] [-sourceLevel [auto, 1.6, 1.7]] module[s]
where
-[no]startServer Starts a servlet container serving the directory specified by the -war flag. (defaults to ON)
-port Specifies the TCP port for the embedded web server (defaults to 8888)
-whitelist Allows the user to browse URLs that match the specified regexes (comma or space separated)
-blacklist Prevents the user browsing URLs that match the specified regexes (comma or space separated)
-logdir Logs to a file in the given directory, as well as graphically
-logLevel The level of logging detail: ERROR, WARN, INFO, TRACE, DEBUG, SPAM, or ALL
-gen Debugging: causes normally-transient generated types to be saved in the specified directory
-bindAddress Specifies the bind address for the code server and web server (defaults to 127.0.0.1)
-codeServerPort Specifies the TCP port for the code server (defaults to 9997)
-server Specify a different embedded web server to run (must implement ServletContainerLauncher)
-startupUrl Automatically launches the specified URL
-war The directory into which deployable output files will be written (defaults to 'war')
-deploy The directory into which deployable but not servable output files will be written (defaults to 'WEB-INF/deploy' under the -war directory/jar, and may be the same as the -extra directory/jar)
-extra The directory into which extra files, not intended for deployment, will be written
-workDir The compiler's working directory for internal use (must be writeable; defaults to a system temp dir)
-sourceLevel Specifies Java source level (defaults to auto:1.7)
and
module[s] Specifies the name(s) of the module(s) to host
Both errors (missing gwt-codeserver, and unknown argument) hint that the Google Plugin for Eclipse didn't properly detect the version of the GWT SDK you're using.
GWT 2.3 is now really old, so I'd suggest trying with GWT 2.7. As you're beginning with GWT, it's also better to start right with SuperDevMode than lose days trying to make DevMode work with recent browsers. Note: that means you'll debug from within the browser, not your IDE (unless you install the SDBG plugin from https://sdbg.github.io)

specify port for standalone mode in PlayFrameWork 2.2.1

I have two apps developed in PlayFrameWork 2.2.1 named:
1. helloWorld_88
2. helloWorld_99
For helloWorld_88:
I want to build this app run (standalone) on port 88.
For helloWorld_99:
I want to build this app run (standalone) on port 99.
As I know, using "dist" task will help me to build a standalone version of apps but I don't know how to specify the port.
Can anybody advice step by step.
Thanks
Rado
Hi Rado, Thanks for your quick reply.
I have already try this before I post the question, but the port always 9000.
See bellow output from the command line (Windows)
E:\Deploy\helloworld_88\bin>helloworld_88 -Dhttp.port=88
Play server process ID is 2216
[info] play - Application started (Prod)
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
Any other idea
Thanks
I assume that you have built both applications using "play dist" command and that you run them using generated "bin/helloWorld_88" and "bin/helloWorld_99" script files on Linux. (for Windows these files are named "bin/helloWorld_88.bat" and "bin/helloWorld_99.bat")
Go to the "bin" folder and run:
helloWorld_88 -Dhttp.port=88
and then for the second application do:
helloWorld_88 -Dhttp.port=99

Categories

Resources