开发者

no-eclipse tomcat env variable equivalent

开发者 https://www.devze.com 2023-02-02 11:58 出处:网络
I can set an environment variable with Eclipse when I click on the Tomcat Server and thenOpen La开发者_C百科unch configuration -> Environment -> Variable, Value. What is no-gui, no-eclipse text

I can set an environment variable with Eclipse when I click on the Tomcat Server and then Open La开发者_C百科unch configuration -> Environment -> Variable, Value. What is no-gui, no-eclipse textual-xml equivalent of this variable setting?


Context Parameters

See: Context Parameters section of The Context Container page.

You can configure named values that will be made visible to the web application as servlet context initialization parameters by nesting <Parameter> elements inside this element. For example, you can create an initialization parameter like this:

<Context ...>
  ...
  <Parameter name="companyName" value="My Company, Incorporated"
         override="false"/>
  ...
</Context>

This is equivalent to the inclusion of the following element in the web application deployment descriptor (/WEB-INF/web.xml):

<context-param>
  <param-name>companyName</param-name>
  <param-value>My Company, Incorporated</param-value>
</context-param>

but does not require modification of the deployment descriptor to customize this value.


If you're using gnu-linux operating system you can edit the catalina.sh script to export you environment variable. First line of the script (after comments, of course) should be

export variableName=variableValue

The credit is for Lucas that told me how to do.


If you meant arguments passed to the launching of your servlet context, see the Answer by miku.

Environment Entries

If you meant the Environment Entries feature, use <Environment> rather than <Parameter> seen in that other Answer.

Here is an example where I set a flag signaling if I am running the web app for development, testing, acceptance, education, or production.

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- Domain: DEV, TEST, ACPT, ED, PROD  -->
    <Environment name = "work.basil.example.deployment-mode"
                 description = "Signals whether to run this web-app with development, testing, acceptance, education, or production settings."
                 value = "DEV"
                 type = "java.lang.String"
                 override = "false"
                 />
</Context>

You have your choice of a few places to place such XML. For this example, we would want to externalize the file, keeping it outside the WAR file containing our web-app. By externalizing, we can deploy our WAR to any of the dev, test, acpt, ed, or prod servers without needing special builds or manual editing. So for this purpose I like to use the feature of Tomcat allowing for an XML file named the same as the context. The file is place in the conf folder, in which you create nested folders named after the Tomcat engine and the host. For example, on my development machine that would be my_tomcat_base_folder/conf/Catalina/localhost/example.xml where example is the name of my context, Catalina is the engine name, and localhost is the host name (not using a domain name while in development).

The syntax of the above XML is Tomcat-specific. For use in Servlet-standard places, such as the /WEB-INF/web.xml file, the equivalent as documented in the Servlet 4 spec section 14.4.21 would be:

<env-entry>
    <env-entry-name>work.basil.example.deployment-mode</env-entry-name>
    <description>Signals whether to run this web-app with development, testing, acceptance, education, or production settings.</description>
    <env-entry-value>DEV</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号