Задать вопрос
Ответы пользователя по тегу Java
  • Call/create Scala class from Java in SpringBoot Project?

    web_dev
    @web_dev Автор вопроса
    Евгений В начале хочу поблагодарить за хороший и развернутй ответ.

    Scala + Spark это конечно хорошо, но насколько мне известно (слушал доклад Евгения Борисова на прошлогоднем JPoint) нет никаких проблем работать со Spark из Java.
    - я тоже этот доклад слушал, но я думаю Вы согласитесь, что в Java реализация не на 100% такая же как и Scala. Для Spark Scala - основной язык, остальные они стараются поддерживать на надлежащем уровне. Ну и второй пункт, та часть - для рассчетов будет делаться другим человеком и он хочет подучить именно Scala и в Java не очень.

    И еще одно не стыкуется в голове, а именно "небольшое web приложение" и использование Scala и Spark для расчетов. Это я к тому, что может не стоит так переусложнять задачу на старте?
    - вот именно, нужно стартануть, чтоб каждый хоть чуток занимался своим, а в процессе можно и поменять что-то... Главное продумать минимум. ))

    Соберите требования, подумайте над архитектурой. Можно окунуться в "прекрасный" мир микросервисов, тогда часть вычислительная может быть и на Scala, и на Python, и на JavaScript.
    - Требования собраны, как я и описывал проблему, - человек хочет скала, а я не могу весь веб проект сходу и другие библиотеки и скалу. Обдумывание архитектуры в процессе. Часть обдумана, вотт, интересуюсь здесь, чтоб получше понять. С этим "прекрасным" миром знаком, но если уж делать все по "фэншую", то для коммуникации нужно будет дополнительно JMS и так д, не продолжаю список, так как понимаю сколько там работы.. Если для двух человек загрузнуть на некоторое время с этим, то функционала не дождемся )))
    И да, Писал, что человек хочет Scala, проект носит немного и обученческий характер. Сейчас подбирается не язык под проблематику, а желание поизучать то что хочется и возможно с полезностью..
    Ответ написан
    Комментировать
  • Jenkins job for auto-versioning with maven-release-plugin?

    web_dev
    @web_dev Автор вопроса
    99% решение.
    то что делает плагин, запустить в нормальный билд процесс с -B - non interactive release
    -Dresume=false -B release:prepare release:perform
    Потом настроить cron job чтоб смотрел к примеру каждую минуту на изминения
    потом в расширенных настройках исключить пользователя с помощью которого запускается работа, - иначе получим рекурсию. Будет каждую минуту билдится.
    Ответ написан
    Комментировать
  • Java - WatchService - проверка не занят ли файл другим процессом?

    web_dev
    @web_dev Автор вопроса
    private void createWatchService(Folder folder) {
    		try {
    			Path dir = Paths.get(folder.getValue());
    			WatchService watcher = FileSystems.getDefault().newWatchService();
    			LogsFolderWatcher fileWatcher = new LogsFolderWatcher(watcher, folder, simpMessagingTemplate);
    			Thread thread = new Thread(fileWatcher, LogsViewerConstants.WATCHER_PREFIX + folder);
    			thread.start();
    			logger.info("Added watcher for " + folder + " folder");
    			dir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    
    -------------------------
    
    /**
     * @author JDev
     *
     */
    public class LogsFolderWatcher implements Runnable {
    
    	private static final Logger logger = LoggerFactory.getLogger(StompDisconnectEvent.class);
    
    	private WatchService watcher;
    	private Folder folderToWatch;
    	private SimpMessagingTemplate simpMessagingTemplate;
    
    	public LogsFolderWatcher(WatchService watcher, Folder folderToWatch, SimpMessagingTemplate simpMessagingTemplate) {
    		this.watcher = watcher;
    		this.folderToWatch = folderToWatch;
    		this.simpMessagingTemplate = simpMessagingTemplate;
    	}
    
    	/**
    	 * In order to implement a file watcher, we loop forever ensuring requesting
    	 * to take the next item from the file watchers queue.
    	 */
    	@SuppressWarnings("rawtypes")
    	@Override
    	public void run() {
    		try {
    			// get the first event before looping
    			WatchKey key = watcher.take();
    			while (!Thread.currentThread().isInterrupted()) {
    				// we have a polled event, now we traverse it and
    				// receive all the states from it
    				for (WatchEvent event : key.pollEvents()) {
    					Path dir = (Path) key.watchable();
    					Path fullPath = dir.resolve((Path) event.context());
    
    					logger.info("Received WatchEvent: '" + event.kind() + "' - for file: " + event.context().toString());
    
    					Log changedLog = LogsViewerCommonFunctions.createLog(fullPath.toFile(), WatchState.valueOf(event.kind().name()));
    					simpMessagingTemplate.convertAndSend("/log/" + folderToWatch, changedLog);
    				}
    				key.reset();
    				key = watcher.take();
    			}
    		} catch (InterruptedException e) {
    			logger.info("Stopping " + Thread.currentThread().getName() + " thread");
    		}
    	}
    }


    Хмммм, и как я только что сам заметил - ловлю я ошибку не в том месте, там где я ее ловлю уже слишком поздно она туда не доходит... Как вы думаете если я ее буду ловить в run() - может что-то измениться?

    public static Log createLog(File file, WatchState watchState) {
    
    		Path path = Paths.get(file.getPath());
    		BasicFileAttributes basicFileAttributes = null;
    		Log log = null;
    		try {
    			basicFileAttributes = Files.getFileAttributeView(path, BasicFileAttributeView.class).readAttributes();
    
    			log = new Log();
    			log.setFileName(file.getName());
    			log.setCreatedOn(new Date(basicFileAttributes.creationTime().toMillis()));
    			log.setModyfiedOn(new Date(basicFileAttributes.lastModifiedTime().toMillis()));
    			log.setSize(basicFileAttributes.size());
    			log.setWatchState(watchState);
    			log.setContent(new String(Files.readAllBytes(path)));
    			logger.info("Created Log for file log: " + log.getFileName());
    
    		} catch (Exception exception) {
    			if (exception instanceof IOException) {
    				logger.info("Cannot read a file " + log.getFileName() + " content or file attributes!");
    			} else if (exception instanceof AccessDeniedException) {
    				logger.info("The file " + log.getFileName() + " used by another process.");
    			}
    			exception.printStackTrace();
    		}
    
    		return log;
    	}
    Ответ написан
    Комментировать
  • Some http server and tomcat integration?

    web_dev
    @web_dev Автор вопроса
    Припустим я настроил это редирект и если я с фронтенда отправляю форму по такому адресу - (POST) www.mydomen.com/create, то nginx перенаправит этот запрос на tomcat сервер? К примеру он будет на www.localhost:9000/, то при POST-запросе вызовется www.localhost:9000/create?
    Вот этого я не очень понимаю...
    Спасибо.
    Ответ написан
    Комментировать
  • Java: new browser -> new session?

    web_dev
    @web_dev Автор вопроса
    Скорей всего виноваты глаза которые спать хотят.

    @GET
      @Path("/auth")
      @Produces(MediaType.APPLICATION_JSON)
      @Consumes(MediaType.APPLICATION_JSON)
      public Response authorisation()
      {
    
        if (kasSessionId == null) {
          log.info("KAS_SESSION_ID_FOR_Authenticate: {}", kasSessionId); //null
          getAuthenticate();
          log.info("KAS_SESSION_ID_AFTER_Authenticate: {}", kasSessionId); //session_id
          request.getSession().setAttribute("KAS_SESSION_ID", kasSessionId);
        }
        else {
          log.info("KAS_SESSION_ID: {}", kasSessionId);
        }
    
        return Response.ok().build();
      }


    Я записываю переменную в аттрибут, а потом ее проверяю постоянно. Спасибо - вопрос уже решил.
    Ответ написан
    Комментировать
  • Как спроектировать небольшую БД и "правильно" сохранять дни недели?

    web_dev
    @web_dev Автор вопроса
    @Rsa97 Все-таки вы меня чуток не правильно поняли. Вот, я сделал небольшую. зарисовку, так уже должно быть понятно 100%. )) Спасибо за подсказки.
    361cdb17f7e242c98af7c9d1f36f6e13.png
    Ответ написан
  • Обработка нажатий клавиш в custom view?

    web_dev
    @web_dev
    1. Сейчас делаю проект, клавиатура вызывается на ура.
    	private void showKeyboard() {
    
    		InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    		imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    	}
    
    или
    
    	private void showKeyboard(EditText editText) {
    		InputMethodManager imm = (InputMethodManager) AddPeriodActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
    		imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
    	}
    
    
    Ответ написан
  • Рабочий пример для: Unit testing with JUnit for Hibernate using HSQLDB (In-Memory)?

    web_dev
    @web_dev Автор вопроса
    Спасибо, кажется разобрался. ))
    Вот так вот работает, вотт… может кому пригодится.

    persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    	version="1.0">
    	<persistence-unit name="in.memory.test"
    		transaction-type="RESOURCE_LOCAL">
    		<description>
    			In memory example using Hibernate and HSQLDB
    		</description>
    		<provider>org.hibernate.ejb.HibernatePersistence</provider>
    		<class>de.htw_berlin.f4.ai.jobboerse.domain.UserJob</class>
    		<properties>
    			<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    			<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
    			<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:test" />
    			<property name="hibernate.connection.username" value="sa" />
    			<property name="hibernate.connection.password" value="" />
    			<property name="hibernate.show_sql" value="true" />
    			<property name="hibernate.hbm2ddl.auto" value="create" />
    		</properties>
    	</persistence-unit>
    </persistence>
    


    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.PersistenceUnit;
    
    public class EntityManagerProvider {
    
    	public static EntityManagerFactory emf;
    		
        @PersistenceUnit
        public void setEntityManagerFactory(EntityManagerFactory emf) {
            this.emf = emf;
        }
        
        public static EntityManager createEntityManager(){
        	return emf.createEntityManager();
        }
    }
    


    
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class UserJobTest {
    
    	private UserJob userJob = new UserJob();
    
    	@BeforeClass
    	public static void setUp() {
    		ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/application-context.xml");
    	}
    
    	@Before
    	public void init() {
    		Profile profile = new Profile();
    		userJob.setProfile(profile);
    		userJob.setFirstname("Oleg");
    		userJob.setLastname("Lastname");
    		userJob.setPostalcode("10318");
    		userJob.setStreet("Street");
    		userJob.setCity("Berlin");
    		userJob.setEmail("E-Mail");
    		userJob.setIsActive(true);
    		userJob.setPassword("pass");
    	}
    
    	@Test
    	public void saveAndLoadUserJobTest() {
    
    		userJob.save();
    
    		UserJob loadedUserJob = userJob.load("E-Mail", "pass");
    
    		Assert.assertEquals(loadedUserJob.getFirstname(), "Oleg");
    		Assert.assertTrue(loadedUserJob.getId() > 0);
    	}
    
    	@Test
    	public void updateUserJobTest() {
    
    		userJob.setFirstname("OlegUpd");
    		userJob.setLastname("LastnameUpd");
    		userJob.setPostalcode("10318Upd");
    		userJob.setStreet("StreetUpd");
    		userJob.setCity("BerlinUpd");
    		userJob.setEmail("E-MailUpd");
    		userJob.setIsActive(false);
    		userJob.setPassword("passUpd");
    
    		userJob.update();
    
    		UserJob loadedUserJob = userJob.load("E-MailUpd", "passUpd");
    		System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>"+ loadedUserJob.toString());
    		Assert.assertEquals(loadedUserJob.getFirstname(), "OlegUpd");
    		Assert.assertEquals(loadedUserJob.getLastname(), "LastnameUpd");
    		Assert.assertEquals(loadedUserJob.getPostalcode(), "10318Upd");
    		Assert.assertEquals(loadedUserJob.getStreet(), "StreetUpd");
    		Assert.assertEquals(loadedUserJob.getCity(), "BerlinUpd");
    		Assert.assertEquals(loadedUserJob.getEmail(), "E-MailUpd");
    		Assert.assertEquals(loadedUserJob.getIsActive(), false);
    		Assert.assertEquals(loadedUserJob.getPassword(), "passUpd");
    
    		Assert.assertTrue(loadedUserJob.getId() > 0);
    	}
    }
    
    
    Ответ написан
  • Тестирование Java EE приложения?

    web_dev
    @web_dev Автор вопроса
    Буду признателен так же на ответ из моего комментария на ответ Alex42rus.
    Ответ написан
  • Spring @Cacheable – удалить(очистить) весь кеш?

    web_dev
    @web_dev Автор вопроса
    Пока что работает вот так.
    @CacheEvict(value = {"faqCache", "faqCategoryCache", "faqTopCache"}, allEntries=true)
    А что если например будет 100 значений?
    Нужно как-то через менеджера стучаться…
    Ответ написан
    Комментировать