powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение в EJB информации из манифеста
15 сообщений из 15, страница 1 из 1
Получение в EJB информации из манифеста
    #37667315
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

JBoss 6.1.0, EJB 3.1

Есть EAR. В его манифесте есть строка с версией приложения.
implementation-build: хххххххх

В нём есть JAR. В нём так же есть та же строка с такой же версией.

Нужно в Stateless-бине получить номер версии. Делаю так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    URL url = getClass().getProtectionDomain().
                getCodeSource().getLocation();
    String urlStr = "jar:" + url.toString() + "META-INF/MANIFEST.MF";
    urlStr = urlStr.replaceAll(".ear/", ".ear/!/");
//    urlStr = urlStr.replaceAll(".jar/", ".jar/!/");
    url = new URL(urlStr);
    log.trace("path={}", url.toString());
    Manifest manifest = new Manifest(url.openStream());
    Attributes attr = manifest.getMainAttributes();
    Object oValue = attr.getValue("implementation-build");
    return oValue.toString();



В логах
path=jar:vfs:/D:/java/jboss/server/default/deploy/StartNg.twf-3.s2.0.ear/!/StartNg.nsi.ejb-3.s2.0.jar/META-INF/MANIFEST.MF

При этом номер версии пуст.
Непонятно- правильно ли я написал путь? Где надо (не надо) ставить /!/ ?

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667364
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если сервер распакует ear?
Слеш лишний перед восклицательным знаком.
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667385
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Blazkowicz!

> А если сервер распакует ear?

А как правильно делать? Хочется иметь возможность спросить "что видите в
формочке "о программе" и знать точно, что не напутали с версиями.

> Слеш лишний перед восклицательным знаком.

Ни
jar:vfs:/D:/java/jboss/server/default/deploy/StartNg.twf-3.s2.0.ear!/StartNg.nsi.ejb-3.s2.0.jar/META-INF/MANIFEST.MF
ни
jar:vfs:/D:/java/jboss/server/default/deploy/StartNg.twf-3.s2.0.ear!/StartNg.nsi.ejb-3.s2.0.jar!/META-INF/MANIFEST.MF
не помогло.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667393
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, тут два момента. Первый это вот этот:
jar:vfs:
Сомневаюсь что будет работать. Второй это вложеный jar. Посмотрите ваш изначальный URL , разве JBoss не распаковал ear? Если распаковал, то ! после ear лишний. Если не распаковал, то таким образом достучатся до внутреннего jar не выйдет совсем.
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667500
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну его - эту возню с ear, или вам именно из бина надо узнать номер версии? Мы лично пользуемся мавен плагином maven:revision-plugin, и просто кладем version.jsp с версией, номером ревизии и т.п. в рут, если надо узнать номер версии заходим по context/version.jsp и никакого геморроя.
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667502
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно если нужно из бина - можно программно считать version.jsp и распарсить.
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667526
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraПри этом номер версии пуст.А такой вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
java -cp lib/catalina.jar org.apache.catalina.util.ServerInfo
 Server version: Apache Tomcat/7.0.22
 Server built:   Sep 27 2011 09:40:50
 Server number:  7.0.22.0
 OS Name:        Windows 2003
 OS Version:     5.2
 Architecture:   amd64
 JVM Version:    1.6.0_31-b05
 JVM Vendor:     Sun Microsystems Inc.

unzip -p lib/catalina.jar */ServerInfo.properties
 # 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.
 server.info=Apache Tomcat/7.0.22
 server.number=7.0.22.0
 server.built=Sep 27 2011 09:40:50

совсем не устраивает?
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667559
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Basil A. Sidorov!

> При этом номер версии пуст.
>
> А такой вариант:
>
> java -cp lib/catalina.jar org.apache.catalina.util.ServerInfo

Мне не нужна версия сервера приложений. Мне нужна версия моего jar'ника,
которую maven записал в манифест.


--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667577
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraМне не нужна версия сервера приложений. Мне нужна версия моего jar'ника,
которую maven записал в манифест.А какая вам разница из какого файла будет прочитана "волшебная строчка"?
И какие проблемы записать собираемую версию не только в манифест.

P.S. Мдя ... Искал, копипастил, ретушировал ...
"В некоторых случаях не помогает и чтение газет".
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667598
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Basil A. Sidorov!

> А какая вам разница из какого файла будет прочитана "волшебная строчка"?

Мне хочется, чтобы пользователь мог посмотреть (и передать в
техподдержку) точную версию приложения, т.е. билд, записанный мавеном.

> И какие проблемы записать собираемую версию /не только/ в манифест.

Как-то даже в голову не приходило, если честно.
Мне кажется это самое логичное место для хранения.

Да и как настроить мавен для записи "не только в манифест"- не знаю. С
манифестом всё просто -
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
            <manifestEntries>
              <SCM-Revision>${buildNumber}</SCM-Revision>

<implementation-build>${project.version}.${buildNumber}</implementation-build>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>



--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667634
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraДа и как настроить мавен для записи "не только в манифест"- не знаю.Если тупо - добавить task или как оно там в стиле:
Код: sql
1.
cmd/cfind "<implementation-build>" META-INF\MANIFEST.MF > Некий/Путь/Какое-то.properties

перед упаковкой в ear.
Если изящно, то я не знаю не только maven :)
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667655
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara,

А сразу по протоколу vfs, new URL(url.toString() + "META-INF/MANIFEST.MF").openStream() пробовал?
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37667675
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, 0FD!

> А сразу по протоколу vfs, new URL(url.toString() +
> "META-INF/MANIFEST.MF").openStream() пробовал?

Ага, нашёл новую статью (после последней попытке раскопать) и оттуда
взял вроде как такой же вариант:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    InputStream s = clazz.getClassLoader().getResourceAsStream(
       "META-INF/MANIFEST.MF");
    Manifest manifest = new Manifest();
    try {
      manifest.read(s);
    } catch (IOException e) {
      return null;
    }
    Attributes attr = manifest.getMainAttributes();
    return attr.getValue("implementation-build").toString();



И всё много проще.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37669053
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо читать MANIFEST.MF. getClass().get Package () , все уже прочитано и разобрано.
...
Рейтинг: 0 / 0
Получение в EJB информации из манифеста
    #37669830
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, пролетевший!

> Не надо читать MANIFEST.MF. getClass().getPackage
> < http://docs.oracle.com/javase/6/docs/api/java/lang/Package.html>() ,
> все уже прочитано и разобрано.

Спасибо!
Только вот <implementation-build> там нет, надо <implementation-version>
писать. Но это мелочи - в целом без разницы, что писать и читать.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение в EJB информации из манифеста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]