How to deploy a Play framework project to Amazon? - java

Is it possible to create a .war of a project running on Play, so that it can be easily deployed on Amazon? Or is it necessary to install play on the server itself where the app will be run?
I would prefer a .war since I want traffic from all sources to be able to run the app, not just on port 9000.

Read this for play 1.x, http://www.playframework.org/documentation/1.2.5/production
and this for 2.x, http://www.playframework.org/documentation/2.0.4/Production
For easier deployment over SSH you may want to look at, https://github.com/nylund/play-deploy/blob/master/documentation/manual/home.textile (disclaimer I wrote the plugin).

You've got quite few concepts mixed there.
The Port the app listens to is 9000 by default but you can change it in application.conf to whatever you want, or even have different ports configured for dev/test/production,... This has nothing to do with war or no war deployment.
Traffic from all sources to be able to run the app, if you mean where the traffic comes from, that's the source port, not the port where your server runs. The only thing I can make sense of there is that you might be thinking about people behind firewalls or proxy's that can typically only access ports 80 or 8080. But as said before, you can listen at whatever port you want.
You might also be referring to port 9000 being firewalled by default in AWS, but again this is something you can set up.
In any case, the answer to the original question is yes, you can create a war and instead of installing Play you can install Tomcat/Jboss/... and deploy it there, but is not related to any of your concerns, so probably just go with Play standalone and save yourself a bunch of problems.

Related

is it possible to use tomcat 10 for JEE and tomcat 9 for spring on one laptop?

is it possible to use tomcat 10 for JEE and tomcat 9 for spring on one laptop? if yes can you ask for instructions on how to do this
Yes, it is possible. Just create two projects and connected to both with two different tomcat versions, you can even change the port of the server. But remember both will not run together if they have the same port.
It is possible to run both server on one computer as long as they are running on different ports
For JEE application to change port you can click on server tab and double click on Apache version and change the port from there. You can see detailed information in the below link:
https://www.codejava.net/servers/tomcat/how-to-change-port-numbers-for-tomcat-in-eclipse
And for spring you can edit application.properties file and set server.port=9090 or anything, this will change the port
By default for both port is 8080, so changing in one of them will make you running both server on a single laptop

How do I debug a Java application deployed in a cluster environment using IntelliJ IDEA?

Each time when I need to debug a Java application deployed in a cluster environment, I'm in big trouble.
Company's environments (Test, Acceptance, etc.) usually is cluster environments with multiply servers and in front of the cluster, there is a proxy server that forwards the requests (HTTP) to one of the servers in the cluster. If you have no access to the individual servers and you are not allowed to lunch the app from one particular server then you must use the endpoint that comes from the proxy.
As I know one IntelliJ can open only one remote debug connection. That means if the request goes to another server in the cluster (where my debugger is not attached) then I can not see anything in my debug window. Maybe next time.
If you are lucky you can stop all servers in the cluster except one, what you are debugging. But to stop servers is also not easy, especially in Acceptance environments.
According to my colleagues, I can debug multiply servers with one Eclipse instance, but I really do not want to use Eclipse.
Okay, I guess that I can copy the whole source code to a different folder, open the code with a new IntelliJ instance, and from there I can connect to the 2nd server in the cluster. But this is a painful hack.
Is there any normal way how to debug the cluster environment with multiple servers with IntelliJ?
You can open as many number of debug sessions as many remote JVM are running on remote ends (on corresponding ip address and tcp port) by creating multiply Run Configurations and launch them:
For example to connect with the above host and port, the remove JVM must be started with
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
if you use JDK version 8 or less, and the
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
if you use JDK version 9 or newer.

IIS and WebSphere on separate servers does not serve jsp pages

Short Background
We have two servers (Windows Server 2008). ServerA is an IBM WebSphere Application Server and ServerB is an IIS 7 webserver that points to applications on ServerA. It currently works. We want to upgrade ServerB to Server 2012, but cannot do an in place upgrade, so we are installing it on a new server (ServerC) and replacing ServerB with it.
We cannot use Tomcat, and the original setup works properly (Internet <--> ServerB (WebServer) <--> ServerA (Application Server).
My questions are (All of these apply to what happens after we swap out ServerB with ServerC):
1) Is there a way to test if a webserver is correctly configured to serve the websphere apps? I think my biggest barrier is that we cannot use the server machine to browse to any sites (I believe it is a group policy...but again, I'm just a software dev and not as knowledgeable about server configurations and system administration). The applications that we can use on the server are very limited, but I have seen some things about using Snoop (which I do not know how to use, but could find out...but I don't think we are allowed to install it on the machine anyway.)
2) When I navigate to a site hosted on IIS that points to a WebSphere application that redirects me to a Login.jsp page, why is the browser trying to download the .jsp file instead of displaying it as a web page? I have not been able to find good google/stackoverflow/serverfault results on a search for why a site hosted on IIS pointing to a WebSphere application server does not display JSP pages, but instead prompts to download the .jsp file.
3) When I try to navigate to some sites hosted on IIS that points to a WebSphere application, why would I receive a 403 Access Denied error on the new IIS server, but not the old server? The folders that the web apps have access to are located on either the local machine (separate drive letter) and the WebSphere application server. All of the local folders on the new server have been configured the same way as on the old server, and all of the local users and groups are setup the same.
Setup Information (More Detailed)
In this part, I would like to show our setup: We have two servers (Windows Server 2008). ServerA is an IBM WebSphere Application Server and ServerB is an IIS 7 webserver. This setup was around before anyone that is currently working at my organization (including myself) started. There are 7 sites configured/setup on IIS with virtual paths (that is, the site is named www.site_name.ourorg.domain). We have an IP address configured on the outward facing NIC for each of the sites and each site has a binding to its specific ip address with port 80 and port 443 (with valid certificates) and their own application pools. We do not have access to configure the domain controller (we are given the IPs to use and someone at a different organization manages our domain server). All of the sites are currently in production and in use on a daily basis.
The Goal
Our goal is to stand up a new Windows Server 2012 webserver (and eventually application server as well). Unfortunately, we cannot do an in-place upgrade, so our System Admin decided that probably the best route would be to setup a new server (ServerC), do a clean install of Windows Server 2012, install IIS7 using the same features and roles that are on ServerB, install IBM WebSphere Plugins and use the same plugin-cfg.xml file. (Later on, when this failed, we reinstalled the WebSphere Plugins as well as the Configuration Tool and creating a new configuration using that, per the instructions in the WebSphere site noted below.) Then, once it is installed and everything appears to be configured the same, disable the outward facing NIC on the existing webserver (ServerB), rename it (since we use Active Directory) to a new name (ServerB-o), rename ServerC to ServerB, and enable the NIC on ServerC (now called ServerB) using the same IP and configuration as the old ServerB (ServerB-o).
The Issue
After we do all of this, we can access IIS (default page, which will be disabled after testing), and it looks like the sites pointing to WebSphere are responding to requests, but we are running into two issues:
1) Some of the sites are returning a 403 Access Denied; The application pools are running as ApplicationPoolIdentity and all of the ApplicationPools (IIS APPPOOL\www.site_name.ourorg.domain) are added to the IUSR group. One peculiartity is when we are setting up the sePlugins virtual folder (for example) and choosing "Connect As...", we cannot use .\localadmin nor localadmin (both are admin users on the webserver). It tells us that the account name or password are incorrect. The old server is configured like this, though.
2) For any site that does not give the 403 error, instead of displaying the translated .jsp page, the browser prompts to download the .jsp file.
Other Information and Attempts
After trying to change the configuration on IIS and the WebSphere plugin multiple times, using a service account (on our AD) instead of .\localadmin, and a few days of research, I have realized that I do not know enough about how to configure servers, especially in this setup, to be of any more help. We are able to do the reverse (disable NIC on new ServerB, rename it to ServerC, rename ServerB-o back to ServerB, and re-enable the NIC), the sites come back up after somewhere between 15 minutes and 3 hours...
I just remembered that there was a part where I had to compare the ApplicationHost.config files and found that the ISAPI filters were not properly set on the new server, but am pretty sure I got everything configured on the new IIS the same as on the old IIS. The only thing that didn't get installed was HipIISEngineStub.dll, which seems like a McAfee-related dll (host intrusion prevention). It is on the old webserver, but not the new.
We have tried standing up the new server 3 times, and I have done more research in between each issue and was able to resolve all of them but this one. Each time we try to stand up the new server, we have to take down production for the remainder of the day, so I would prefer to be able to find a way to test it without taking production down.
One More Note
One last note is the most recent thing I was able to do was setup the configuration on ServerC, leave the outward facing NIC disabled, create a new site using the same physical path and configuration setup, except that it binds all unassigned IP addresses and an unused port (let's say 11111, for example) to one of the apps. I added the sePlugins virtual directory to it, and tested it from another workstation on the same domain by going to https://ServerC:11111. That successfully redirected my to the https://www.site_name.ourorg.domain/app_sub/Login.jsp <- which is being served by the old machine. I don't really know what this test means, other than the new IIS being able to read the configuration file and perform the appropriate steps for redirecting.
Resources
When installing WebSphere on the new webserver, I followed the steps at IBM's Site.
I have seen countless resources for the other issues I had, such as adding the AppPools to the IUSR group, configuring an app pool to run as a specific identity, how having the multiple IPs on a NIC and have them bound to sites in IIS works, and other manner of sys admin stuff that I am not familiar with, nor fully grasp.
I would greatly appreciate any assistance with getting a new server setup to properly server jsp pages using WebSphere. Even if you have a resource for completely uninstalling and reinstalling WebSphere on the new machine. I am hesitant to make any configuration changes on the WebSphere Application server itself, since we can easily roll back to the using the old webserver and the sites come back up. However, I am open to suggestions if that is where the issue is.
Once again, I apologize for posting a question that seemed to have too large a scope. I was able to get in contact with IBM support. The short answer is that while I had many other configuration issues, there were two main items preventing me from successfully serving the websites.
First, I had installed only the application server (Base installation) instead of the Network Deployment installation. This meant that there were more steps needed so that the application server to serve multiple applications to the web server. This was resolved by following the steps in this tech note. It involved setting up one plugin_root\bin\AppName and one plugin_root\config\AppName folder (and optionally in the log folder as well) on the web server for each WebSphere application; as well as modifying the configuration file (plugin_root\bin\plugin-cfg.loc and plugin_root\config\plugin-cfg.xml) for each specific app. Then, I needed to remove the ISAPI filter entry at the server level (in IIS Manager), and add the entry to the ISAPI filter for each site. I also needed to change the permissions on the Handlers Mappings in the sePlugins virtual folder to allow Read and Execute (one of the main reasons for the 403 errors).
The second issue was that I needed to add the ports that I was using for the test sites to the virtual hosts list using the Administrative Console, regenerating the plugins, and copying them to the web server (to the appropriate folders).
After getting everything up and running (and taking a snapshot of the server), I uninstalled everything and reinstalled WebSphere using the instructions listed in the resources section of my question, except I installed and configured it using the Network Deployment installation. This meant that I could have the ISAPI filter set at the server level in IIS manager, and have one folder to hold the iisWASPlugin file and associated loc, config, and log files. It turns out that I needed to set the permissions in the Handler Mappings for the sePlugins folder for each app to Read, Script, and Execute (having it just Script and Execute did not work for our setup), as well as making sure the ports were added to the Virtual Hosts list (therefore adding them to the config file).
I hope this helps someone in the future.

How to use IIS and Glassfish/Tomcat in the same server?

Here is my problem:
My company has a server with IIS and i wasnt abble to install GlassFish there because it may cause problems with IIS and all other pages that are there. So I could use Tomcat too but it seams will have the same problems. GlassFish/Tomcat will want to listen to the same port as IIS and the only thing I can do is to have both (IIS and GlassFish/Tomcat) at the same time in the same saver.
I have a Java Web Application that I want to put there but... dont know how to install GlassFish/Tomcat without afecting IIS.
Please explain me how to do it.

localhost 4848, 8080 problem

this might sound like a stupid question, but i want to clarify a concept:
using netbeans 6.9, ive successfully completed a web application project using a glassfish container (locally). when i run the project, everything works well, except it runs on http://localhost:11494/myApp/. should'nt the accessing task be on http://localhost:8080/myApp/? when i type http://localhost:8080/myApp/, it doesnt connect to localhost.. neither does http://localhost:4848 to access the admin console. why is this? i think my concepts on deployment are not that thorough. i didn't manually deploy anything.. thanks in advance!
EDIT: right now, the university module im taking has lecture notes which specify manual deployment. id rather let netbeans handle deployment. perhaps this is the cause of the difference in port numbers?
All of your settings are in the domain.xml so you can look in there. However, the port (8262) your showing in your connection tab should be your admin console, so you can view the settings in there as well.
I think port number 8080 is not assigned to your application, you can assign 8080 to listen to your application by making changes into server.xml, file all you need to do is add a connector or modify the connector entry to listen to 8080 instead of 11494...!!
When you run the project, do you launch the server from within Netbeans? If so, I'd check there first. If you run from the command line, it has to be a GlassFish configuration issue.
If I got desperate, I'd grep my machine for "11494"!
Remember, the solution should be as simple as possible, but no simpler! ;-)
I think port 8080 is occupied by another process, therefore Glassfish decide to use another port..

Categories

Resources