2016-12-19 3 views
1

Я хочу, чтобы получить значение COMPANYNAME которое в context.xml я получаю null значение после того, как писать код указанный нижеЯ хочу, чтобы прочитать параметры TOMCAT context.xml

Пожалуйста, помогите мне в получении значения из context.xml. Вы даже можете сказать, другой способ получения значения из context.xml

ПРИМЕЧАНИЕ: Не говори писать в web.xml параметров

context.xml (Tomcat 7)

<?xml version='1.0' encoding='utf-8'?> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one or more 
    contributor license agreements. See the NOTICE file distributed with 
    this work for additional information regarding copyright ownership. 
    The ASF licenses this file to You under the Apache License, Version 2.0 
    (the "License"); you may not use this file except in compliance with 
    the License. You may obtain a copy of the License at 

     http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--> 
<!-- The contents of this file will be loaded for each web application --> 
<Context> 

    <!-- Default set of monitored resources --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 

    <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
    <!-- 
    <Manager pathname="" /> 
    --> 

    <!-- Uncomment this to enable Comet connection tacking (provides events 
     on session expiration as well as webapp lifecycle) --> 
    <!-- 
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
    --> 
<Parameter name="companyName" value="My Company, Incorporated" 
      override="false"/> 

</Context> 

JSP (index.jsp)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<% 
ServletContext sc= getServletContext(); 
String testNameValue = sc.getInitParameter("companyName"); 
%> 
<input type="text" value="<%=testNameValue%>"> 
</body> 
</html> 

Выход

Output

Обновленный после внедрения решения приведенной ниже

Exception приходит

Exception

+0

Какое значение вы пытаетесь получить еще раз? А что не работает? Попробуйте создать [MCVE] – Cullub

+0

Я не могу воспроизвести с тем же кодом на tomcat 8 –

+0

в Tomcat есть context.xml, В том, что у меня есть один параметр как companyName с некоторым значением. В jsp я хочу это значение но я не получаю правильное значение, я получаю null в качестве значения. Пожалуйста, используйте tomcat 7 – Aman

ответ

1

Вы не можете загрузить путь, потому что context.xml - ресурс JNDI. Пожалуйста, попробуйте следующий подход:

Tomcat (context.xml)

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

Java Side

InitialContext context = new InitialContext(); 
Context xmlNode = (Context) context.lookup("java:comp/env"); 
String companyName = (String) xmlNode.lookup("companyName"); 

Spring Side HomeController.java

@Controller 
@RequestMapping("/") 
public class HomeController { 

    @Autowired 
    private ServletContext servletContext; 

    @RequestMapping(method=RequestMethod.GET) 
    public ModelAndView index(ModelAndView mav) throws Exception { 
     String companyName = servletContext.getInitParameter("companyName"); 
     mav.setViewName("home/index"); 
     mav.addObject("companyName", companyName); 
     return mav; 
    } 

    public void setServletContext(ServletContext servletContext) { 
     this.servletContext = servletContext; 
    } 
} 

Вид сбоку index.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Home</title> 
    </head> 
    <body> 
     <c:out value="${companyName}"/> 
    </body> 
</html> 

В приведенном выше примере доказала свою эффективность на моем конце. Мой скрипт может читать файл context.xml во время выполнения, как показано.

screenshot

+0

javax.servlet.ServletException: javax.naming.NameNotFoundException: Имя [имя_компании] не связано в этом контексте. Не удалось найти [companyName]. \t org.apache.jasper.runtime.PageContextImpl.doHandlePageException (PageContextImpl.java:912) ...... для более подробной информации о uploded pic выше в вопросе – Aman

+0

Это весна MVC. Я хочу сделать с помощью простого веб-приложения, что для использования скрипты в jsp. Если u может помочь. Thankx – Aman

0
<Environment name="companyName" value="My Company, Incorporated" 
type="java.lang.String" override="false"/> 

работал лучше для меня, чем параметр, поскольку последний был бросать javax.naming.NameNotFoundException: Name [companyName] is not bound in this Context. Unable to find [companyName]. при попытке получить значение с помощью String companyName = (String) xmlNode.lookup("companyName");

Смежные вопросы