Thanks Jan,that was a good lead. But it looks like I am hosed. Launch4J has changed the structure of the file such that while jar and WinZip will happily list the entries and Winzip will extract the contents, jar extracts nothing and JarInputStream reports zero entries. The actual byte structure is not equivalent.
William On Fri, Oct 3, 2014 at 11:11 AM, Jan Bartel <[email protected]> wrote: > William, > > I suggest you turn on DEBUG logging for the > o.e.j.webapp.WebInfConfiguration class - it is the one responsible for > unpacking a war. The debug should help you work out the url and > location of the war that is to be extracted. Note that if the .war is > packed again inside a .exe I wouldn't expect Jetty to be able to > extract it - we don't deal with that many layers of onion skin: the > webapp must be either a directory or a packed war. > > regards > Jan > > On 3 October 2014 10:15, William Ferguson > <[email protected]> wrote: > > Even though I am starting an embedded Jetty instance with: > > > > final Server server = new Server(port); > > server.setHandler(webApp); > > final WebAppContext webApp = new WebAppContext(); > > webApp.setContextPath("/"); > > webApp.setWelcomeFiles(new String[]{"index.html"}); > > webApp.setWar(exeFile.getAbsolutePath()); > > > > Is it possible that the WebAppProvider > > ( > http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/deploy/providers/WebAppProvider.html > ) > > is being invoked and is excluding the WebApp content because the > launching > > file doesn't end in .war? > > > > William > > > > > > On Fri, Oct 3, 2014 at 9:38 AM, William Ferguson > > <[email protected]> wrote: > >> > >> @Michael Launch4J doesn't have anything to do with Jetty's webapp > content > >> extraction process. So asking these questions of Launch4J would be > >> inappropriate. > >> Clearly some context that is being expected within Jetty is not being > met > >> when bundled as an EXE. You can only answer these questions from within > a > >> Jetty perspective. > >> ------ > >> So my question is, what is responsible within Jetty for extracting the > >> webapp content? > >> What might be causing it to not extract from an application.exe archive > vs > >> an application.war archive? > >> What can be done to make it extract the content when repackaged as EXE? > >> ------ > >> > >> I'm happy to dive into the Jetty code, but I need a jumping off point. > >> > >> William > >> > >> On Fri, Oct 3, 2014 at 9:32 AM, Michael Dykman <[email protected]> > wrote: > >>> > >>> The problem appears to be with launch4j, not Java or Jetty. This is the > >>> wrong forum to ask. > >>> > >>> On 2 Oct 2014 19:23, "William Ferguson" < > [email protected]> > >>> wrote: > >>>> > >>>> The EXE has full permissions. > >>>> > >>>> There is no extra SecutiryManager being applied by the launcher. > >>>> > >>>> I wasn't specifying an explicit WebAppContext#tempDirectory so it was > >>>> already using java.io.tmpdir > >>>> > >>>> Now this seems strange .. > >>>> When I specify an explicit WebAppContext#tempDirectory (for both the > EXE > >>>> and WAR versions), the explicit folder is never created. And if it > existed > >>>> beforehand it is deleted on server start. And there is no folder being > >>>> created in java.io.tmpdir. In any case for the WAR Jetty serves > normally, > >>>> for the EXE it now throws a 503. > >>>> > >>>> William > >>>> > >>>> On Fri, Oct 3, 2014 at 9:01 AM, Joakim Erdfelt <[email protected]> > >>>> wrote: > >>>>> > >>>>> Most EXE processes are merely launchers for java and your app. > >>>>> Nothing really changes as far as the jars / classes etc. > >>>>> They are usually left, in-tact. > >>>>> > >>>>> Since this is being launched on windows, via an EXE, I would start to > >>>>> look at permissions that your EXE has. > >>>>> It might not have the rights to do what you think it should be able > to > >>>>> do. (look at the rights of the application/exe on windows for this) > >>>>> > >>>>> Also look into any sort of java SecurityManager that is applied to > your > >>>>> running application. (some launchers apply custom SecurityManager > >>>>> configurations) > >>>>> > >>>>> Out of curiosity, are there files in your java.io.tmpdir instead? > >>>>> > >>>>> > >>>>> -- > >>>>> Joakim Erdfelt <[email protected]> > >>>>> webtide.com - intalio.com/jetty > >>>>> Expert advice, services and support from from the Jetty & CometD > >>>>> experts > >>>>> eclipse.org/jetty - cometd.org > >>>>> > >>>>> On Thu, Oct 2, 2014 at 3:37 PM, William Ferguson > >>>>> <[email protected]> wrote: > >>>>>> > >>>>>> I have a webapp that is packaged as a WAR but for which I have a > main > >>>>>> application class that creates an embedded Jetty instance to serve > the WAR. > >>>>>> All works well. > >>>>>> When the app starts Jetty extracts the WebApp content into the > >>>>>> WebAppContext#tempDirectory and Jetty serves all resources. > >>>>>> > >>>>>> But I am trying to package the WAR as an EXE using launch4J and am > >>>>>> running into a problem. Launch4J creates the EXE, the EXE starts > and my main > >>>>>> class starts the Jetty server. But while the > WebAppContext#tempDirectory is > >>>>>> being correctly set, the contents of the WebApp are not being > extracted into > >>>>>> it. > >>>>>> > >>>>>> Jetty does create the tempDirectory with a webapp child folder, but > >>>>>> that child folder is empty. This means that Jetty returns 404 for > >>>>>> everything. > >>>>>> > >>>>>> NB the EXE that is generated by Launch4J is a valid archive and can > be > >>>>>> opened as such by WinZip etc. > >>>>>> > >>>>>> So my question is, what is responsible within Jetty for extracting > the > >>>>>> webapp content? > >>>>>> What might be causing it to not extract from an application.exe > >>>>>> archive vs an application.war archive? > >>>>>> What can be done to make it extract the content when repackaged as > >>>>>> EXE? > >>>>>> > >>>>>> This is on Jetty 9.1.1.v20140108 > >>>>>> > >>>>>> William > >>>>>> > >>>>>> _______________________________________________ > >>>>>> jetty-users mailing list > >>>>>> [email protected] > >>>>>> To change your delivery options, retrieve your password, or > >>>>>> unsubscribe from this list, visit > >>>>>> https://dev.eclipse.org/mailman/listinfo/jetty-users > >>>>> > >>>>> > >>>>> > >>>>> _______________________________________________ > >>>>> jetty-users mailing list > >>>>> [email protected] > >>>>> To change your delivery options, retrieve your password, or > unsubscribe > >>>>> from this list, visit > >>>>> https://dev.eclipse.org/mailman/listinfo/jetty-users > >>>> > >>>> > >>>> > >>>> _______________________________________________ > >>>> jetty-users mailing list > >>>> [email protected] > >>>> To change your delivery options, retrieve your password, or > unsubscribe > >>>> from this list, visit > >>>> https://dev.eclipse.org/mailman/listinfo/jetty-users > >>> > >>> > >>> _______________________________________________ > >>> jetty-users mailing list > >>> [email protected] > >>> To change your delivery options, retrieve your password, or unsubscribe > >>> from this list, visit > >>> https://dev.eclipse.org/mailman/listinfo/jetty-users > >> > >> > > > > > > _______________________________________________ > > jetty-users mailing list > > [email protected] > > To change your delivery options, retrieve your password, or unsubscribe > from > > this list, visit > > https://dev.eclipse.org/mailman/listinfo/jetty-users > > > > -- > Jan Bartel <[email protected]> > www.webtide.com > 'Expert Jetty/CometD developer,production,operations advice' > _______________________________________________ > jetty-users mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://dev.eclipse.org/mailman/listinfo/jetty-users >
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
