Изучая Java EE, jboss, и т.д.

Хорошо. Мы можем сказать следующее:

  • запросы идентичны от обоих менеджеров
  • , ответы на оба запроса идентичны

, Это означает, что или вывод сетевого SNMP "искажается"/, преобразованный, или вывод EasySNMP.

, К сожалению, захваты пакетов не показывают взаимодействия, которые были описаны в исходной версии сообщения, таким образом, мы не можем сразу сказать, какой менеджер виновным. Однако возможно сделать вычет на основе значений, которые мы видим.

Ваш вывод сценария Python является почти надмножеством вывода snmpwalk:

  • сетевой SNMP:

    • сценарий 00 AE
  • Python C5 C0 AC 84 C6 5F 95 EF B0 4E 26 8B 1C 4 А:

    • C2 AC C2 84 C3 86 5F C2 95 C3 AF C2 B0 4E 26 C2 8B 1C C3 85 C3 80 4 А 00 C2 B0 C2 AE 59 C2 93 4E 26 C2 8B 4E C2 AD

Итак, почему были добавлены дополнительные байты, и почему некоторые байты были потеряны? Это пахнет как перекодирование исходных данных, правильно?

Мы можем заметить, что байт C2 открывается много. Что это? Это - "расширенный ASCII" (нет на самом деле никакой такой вещи, но во многих кодовых страницах) для символа Г. Ага, красный флаг. Почему это - красный флаг? Поскольку это обычно - доказательство неправильно истолкованного UTF-8. (Я мог объяснить более подробно , почему это, но я позволю Вам кодировка Unicode исследования отдельно, если Вы будете требовать.)

Так, с помощью сетевой инструмент или два , давайте декодировать тот второй поток байтов как UTF-8 и давайте посмотрим, какие логические кодовые точки мы получаем:

U+AC U+84 U+C6 U+5F U+95 U+EF U+B0 U+4E U+26 U+8B U+1C U+C5 U+C0 U+4A U+59 U+93 U+B0 U+4E U+26 U+8B U+4E U+AD

U+AE

Эй, который выглядит знакомым! (Снова, я имею полужирный биты, которые соответствуют выводу сетевого SNMP.) U+00 отсутствует (по-видимому, потому что , который является "пустым" байтом как в ASCII) и существует все еще набор шума в конце (если Вам интересно, они представляют как это: " Y “ ° N & ‹ N ­"; ), но мы можем теперь, по крайней мере, видеть то, что продолжается: Ваш исходный поток байтов был повторно закодирован как строка UTF-8. Действительно, кодировка по умолчанию Python 3 является UTF-8.

причина, что байты как C6 исчезли полностью, состоит в том, что они падают за пределами диапазона ASCII, так отобразитесь "грязно" в Unicode. ASCII C6, это складывается, U+00C6, который представлен в UTF-8 C3 86, поэтому теперь мы знаем, куда неполужирные байты прибывают из, также.

Так, EasySNMP рассматривает Ваш результат обхода как строка , а не как непрозрачная последовательность байтов, и в результате Python исказил его. Затем когда Вы записали .encode("hex"), Вы получили шестнадцатерично-парное представление этого нового, сфальсифицировал строку UTF-8.

Этого не должно, вероятно, происходить. Ответ SNMP ясно обозначается как "OctetString", и спецификация говорит нам, что "Эти OCTET STRING тип представляет произвольные двоичные или текстовые данные" . MIB (то, которое Вы, кажется, не используете или по крайней мере не обеспечили) для агента, с который Вы связываетесь, может предоставить дальнейшую информацию о кодировании; в отсутствие той информации нет никакого способа знать наверняка, как OCTET STRING должен быть отображен. Например, эта ошибка сетевого SNMP обсуждает буквально создание предположение , когда применимо.

Так или иначе, все очень интересные, но что мы можем делать с этим?

документы EasySNMP являются довольно тонкими, но мы можем ввести по абсолютному адресу вокруг в исходном коде немного (и, в процессе, обнаружить, что EasySNMP является на самом деле просто оберткой Python вокруг сетевого SNMP! ), и на EasySNMP выпускает список, где это складывается , кто-то жаловался на это прежде .

Снова, тогда, что мы можем делать с этим?

Гм, я не уверен, что существует очень, мы можем делать с этим. Это в настоящее время - дефект в EasySNMP. Вещами является Unicodised (или самим EasySNMP, посредством преобразования в строки Python, или сетевым SNMP разделяют модуль, описал ранее), даже когда они не должны быть.

Однако этот парень предложил обходное решение , что Вы могли попробовать:

session = Session(
   hostname='192.168.10.150',
   community='public',
   version=2,
   use_sprint_value=False
)

, Что новый заключительный аргумент должен выключить преобразование значения. Однако я не убежден, потому что на документы это уже False по умолчанию.

Вне попытки его так или иначе, я думаю, что Ваш лучший выбор состоит в том, чтобы добавить Ваш вес к соответствующему отчету (отчетам) о проблеме и оказать давление на разработчика для предложения фиксации. Извините.

9
задан AMIC MING 25 September 2012 в 21:39
поделиться

5 ответов

Для быстрого набирания скорость действительно необходимо освоить EJBs и JSP/Servlets. Это - основные принципы Java технология EE. Серия Head First на EJBs и JSP/Servlets является хорошим началом для того, что обычно было отупляющим образом сложной платформой. Остерегайтесь того недавнего Главы, которого Первые выпуски переключили на обучение более простых основанных на аннотации платформ Java EE 1.5. В то время как более новая версия Java EE более прост и лучше, вероятно, необходимо знать предыдущие версии (Java EE 1.4 = EJB 2.1 и Сервлеты 2.4).

На данном этапе Вы только опустили ногу в воду. Я провел бы много времени за следующий год, читая на Java технологии EE и в более общем плане разработку корпоративного приложения для клиент-серверов.

a) Абсолютно необходимо понять моделирование данных и базы данных. Лучшие, которые я видел, Chris Date, Steve Feuerstein (если Вы используете Oracle), и Joe Celko. Лучший Java разработчики EE может не отставать от их DBAs в технических дискуссиях о базе данных.

b) Действительно необходимо понять, как JDBC работает, и почему инструменты ORM как iBatis, Hibernate и Toplink появились. Принятие Вас знает, как записать ДАО JDBC, затем убедиться понять, как В спящем режиме работы.

c) Необходимо понять как многоуровневая архитектура JAVA EE-приложения. Базовый Java, который Шаблоны разработки EE предписали типичной практике, и очень вероятно, что Ваш предстоящий проект будет придерживаться тех шаблонов. Тем не менее необходимо также понять альтернативные точки зрения на архитектуре. Я нашел Шаблоны Martin Fowler Архитектуры приложений для предприятия и Опытный Java Rod Johnson Один на один Проектированием и разработкой EE, чтобы быть ценным. Идеи в последнем стали платформой Spring и приспособились к господствующей тенденции для того, сколько разработчиков J2EE предпочитает разрабатывать свои приложения.

d) Затем изучите некоторые платформы, которые вырастили вокруг Java экосистему EEE. В то время как это - философский вопрос, почему существует столько платформ, и какой лучше, фокусируясь на платформах, которые конкретно использует Ваш работодатель, более чем достаточно.

6
ответ дан 4 December 2019 в 13:50
поделиться

Несколько ответов приходят на ум:

  • если "простой Java" будет тем, к чему Вы привыкли, то Вам, вероятно, будет нужно основание простого j2EE больше, чем определенный материал JBOSS. Я запустил бы с учебных руководств солнца, но быть знакомым с общей структурой сервлетов, API сервлета, является основой.

  • когда серверы приложений идут, JBoss (только мое смещенное мнение) безумно большой и сложен. Думайте, "запуская шаттл", и Вы не будете далеки. Миллион сервисов. Это специфически известно тем, что имело необычную структуру загрузчика класса (хотя это, возможно, изменилось, так как я использовал его в последний раз, приблизительно 1 - 2 года назад), среди прочего. Это также имеет обширный список хороших сервисов, как основа JMX (бобы конфигурации управления), хотя документация, вероятно, будет пятнистой, поскольку поддержка является заплаченным сервисом.

Лучшее предложение - ознакомляется с библиотеками J2EE. Затем должен был бы получить основной сайт, работающий в JBOSS. Более определенный материал, который Вы могли бы хотеть сделать, вероятно, будет очень характерен для их установки (например, существует реализация JMS, доступная там, но они не могут использовать его), поскольку я видел, что люди используют его для только контейнера сервлета.

4
ответ дан 4 December 2019 в 13:50
поделиться

я предложил бы читать книгу как Jboss на работе http://oreilly.com/catalog/9780596007348/

Мы используем jboss также на работе.. и я прочитал эту книгу и нашел это полезным..

2
ответ дан 4 December 2019 в 13:50
поделиться

Походит на меня (хотя определенно не с 10 годами exp). Я запустил с Главного первого ряда для servlet/jsps. Я уже знал то, для чего они были предназначены. Если бы у Вас есть хорошее схватывание шаблонов разработки и OOPS, Ejbs и другие ресурсы были бы куском пирога, Концентрата на том, почему они, как и что сделать, может ожидать. Серверы приложений являются другим зверем, однако, проходить администраторские руководства помогло разъяснить довольно много вещей. Хранилища/Кластеризация SSL/сертификата могут прибыть в конце списка. Также требуется узнать об инструментах ORM как Hibernet; альтернативные технологии представления как Калитка, Гобелен и т.д.; Контейнерам как Spring и библиотеки нравятся распорки, все могут медленно изучаться. Лучшие практики и обзор, отправленный на всем протяжении Интернета определенно, помогают.

Выбор какой порядок следовать, не должен быть настолько трудным, поскольку место работы диктует технологии большую часть времени. Просто помните, J2EE является набором спецификаций, и платформы по существу поддерживают библиотеки, которые предназначены определенной группе. Это - разработчик/разработчик, который удерживает клавишу

2
ответ дан 4 December 2019 в 13:50
поделиться

Изучите бобы Java предприятия

1
ответ дан 4 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: